慕的地6264312
2019-10-19 15:10:55
我想在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中寫入?謝謝。
3 回答

30秒到達戰場
TA貢獻1828條經驗 獲得超6個贊
HADOOP_CONF_DIR在您的Hadoop配置文件夾中定義環境變量,或者在代碼中添加以下兩行:
config.addResource(new Path("/HADOOP_HOME/conf/core-site.xml"));
config.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml"));
如果不添加它,則客戶端將嘗試寫入本地FS,從而導致權限被拒絕的異常。

慕森卡
TA貢獻1806條經驗 獲得超8個贊
請嘗試以下方法。
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/150
提交
取消