0

我在 HDFS 上有一个文件,我使用 FSDataOutputStream.writeInt() 在我的代码中写入了整数

如何从命令行 hadoop 工具中读取它?hadoop dfs -cat 返回我的二进制垃圾。

4

1 回答 1

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;
    }
}

然后你可以捆绑在一个 jar 中并执行:

hadoop jar myJar.jar IntFileReader /path/to/file/in/hdfs
于 2012-04-07T12:12:03.013 回答