如何读取包含写入的int的hadoop文件

时间:2012-04-06 21:16:35

标签: filesystems hdfs

我在HDFS上有一个文件,我使用FSDataOutputStream.writeInt()

在我的代码中编写了这个文件

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

1 个答案:

答案 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