我在HDFS上有一个文件,我使用FSDataOutputStream.writeInt()
在我的代码中编写了这个文件如何从命令行hadoop工具中读取它? hadoop dfs -cat返回二进制垃圾。
答案 0 :(得分:1)
直接从命令行使用hadoop fs
的一些混合 - 不太可能,除非您想通过awk脚本深入研究输出。
你可以写一个简单的java类来读取文件,我猜是这样的:
public class IntFileReader extends Configured implements Tool {
public static void main(String[] args) throws Exception {
ToolRunner.run(new IntFileReader(), args);
}
public int run(String[] args) throws Exception {
FileSystem fs = FileSystem.get(getConf());
FSDataInputStream is = fs.open(new Path(args[0]));
while (is.available() != -1) {
System.out.println(is.readInt());
}
is.close();
return 0;
}
}
然后你可以在一个罐子里捆绑并执行:
hadoop jar myJar.jar IntFileReader /path/to/file/in/hdfs