我在 HDFS 上有一个文件,我使用 FSDataOutputStream.writeInt() 在我的代码中写入了整数
如何从命令行 hadoop 工具中读取它?hadoop dfs -cat 返回我的二进制垃圾。
我在 HDFS 上有一个文件,我使用 FSDataOutputStream.writeInt() 在我的代码中写入了整数
如何从命令行 hadoop 工具中读取它?hadoop dfs -cat 返回我的二进制垃圾。
直接从命令行使用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;
}
}
然后你可以捆绑在一个 jar 中并执行:
hadoop jar myJar.jar IntFileReader /path/to/file/in/hdfs