0

FSDataOutputStream.writeInt()を使用してコードにintを書き込んだHDFS上のファイルがあります

コマンドラインhadoopツールから読み取るにはどうすればよいですか?hadoopdfs-catはバイナリガベージを返します。

4

1 に答える 1

1

hadoop fsawkスクリプトを介して出力をパイプ処理する方法を詳しく調べたい場合を除いて、コマンドラインから直接-の組み合わせを使用することはほとんどありません。

ファイルを読み取るための単純な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 に答える