2013-04-14 36 views
43

ファイルをHDFSに作成し、そこにデータを書きたいと思っています。これは、ファイルが作成されますが、それはそれで何かを書くdoes'tJavaでhdfsにファイルを書き込む

Configuration config = new Configuration();  
FileSystem fs = FileSystem.get(config); 
Path filenamePath = new Path("input.txt"); 
try { 
    if (fs.exists(filenamePath)) { 
     fs.delete(filenamePath, true); 
    } 

    FSDataOutputStream fin = fs.create(filenamePath); 
    fin.writeUTF("hello"); 
    fin.close(); 
} 

:私はこのコードを使用していました。私は多くを探しましたが、 は何も見つかりませんでした。私の問題は何ですか? HDFSに書き込むための許可が必要ですか?

ありがとうございました。

+0

このコードは、単一のパーティションを持つ 'HDFS'ファイルを作成するを取得するとき、我々はINPUT.TXT用のパーティションの数を設定することができタリクのasnwerあなたは、URIを渡すことができ、@の代わりに? – vdep

答えて

-2

以下の方法を試してください。

FileSystem fs = path.getFileSystem(conf); 
SequenceFile.Writer inputWriter = new SequenceFile.Writer(fs, conf, path, LongWritable.class, MyWritable.class); 
inputWriter.append(new LongWritable(uniqueId++), new MyWritable(data)); 
inputWriter.close(); 
+0

ユーザは、シーケンスファイルではなく、ファイルを書きたいだけです。 – Tariq

+0

あなたはジョブ構成スタブを含んでいますか? – Uselesssss

15

あなたのHadoopの設定フォルダにHADOOP_CONF_DIR環境変数を定義したり、コードに次の2行追加してください:あなたはこれを追加しない場合は、クライアントがへの書き込みをしようとします

config.addResource(new Path("/HADOOP_HOME/conf/core-site.xml")); 
config.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml")); 

をその結果、許可拒否例外が発生します。

57

ファイルシステム

Configuration configuration = new Configuration(); 
FileSystem hdfs = FileSystem.get(new URI("hdfs://localhost:54310"), configuration); 
Path file = new Path("hdfs://localhost:54310/s2013/batch/table.html"); 
if (hdfs.exists(file)) { hdfs.delete(file, true); } 
OutputStream os = hdfs.create(file, 
    new Progressable() { 
     public void progress() { 
      out.println("...bytes written: [ "+bytesWritten+" ]"); 
     } }); 
BufferedWriter br = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
br.write("Hello World"); 
br.close(); 
hdfs.close(); 
+3

変数 'bytesWritten'を取得する方法は? –

+0

OutputStreamのドキュメントを見てみてください。例:https://docs.oracle.com/javase/7/docs/api/java/io/DataOutputStream.html –

+1

インポート・ステートメントは役に立ちます...特にConfigurationはどこから来ていますか? –

関連する問題