1 這個用的比較少,限制比較大,一般情況下不對已經存在的資料和檔案進行修改,修改的往往是mapreduce 或者其他階段產生的臨時檔案
import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.IOUtils;public class FilsSystemWrite {/** * @param args * Function: 向hdfs 系統中寫資料 * @throws IOException */public static void main(String[] args) throws IOException {// TODO Auto-generated method stubConfiguration conf = new Configuration();FileSystem fsin = FileSystem.get(URI.create(args[0]),conf); FileSystem fsout = FileSystem.get(URI.create(args[1]),conf);InputStream in = null;FSDataOutputStream out =null;try{in = fsin.open(new Path(args[0]));out= fsout.create(new Path(args[1]), true);//out= fsout.append(new Path(args[1]));IOUtils.copyBytes(in, out, conf);//out.writeUTF("Hello"); 叢集中不允許使用,不然的話,會產生各種資料相關和不一致以及同步性的問題,在mapreduce 階段或者其他產生臨時資料是可以用append}finally{IOUtils.closeStream(in);IOUtils.closeStream(out);}}}
可以寫入新的檔案