2017-03-01 9 views
1

私はApacheのクランチが新しく、Apacheのクランチで寄木細工のファイルを読み書きするのを探しています。 私はドキュメンテーションとAPIに従っていましたが、同じことをするためのストレートなアプローチ/方法はありませんでした。Apache Crunchの寄木細工ファイルを書く

PCollection<String> pipeLine = MemPipeline.collectionOf("Pineapple", "Banana", "Orange"); 

PCollection<Integer> b = pipeLine.parallelDo(new DoFn<String, Integer>() { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public void process(String input, Emitter<Integer> emitter) { 
     emitter.emit(input.length()); 
    } 
    }, ints()); 

    b.write(new AvroParquetFileTarget("D:\\Tutorials\\CCP_WorkSpace\\Crunch\\resources\\output")); 

ありがとうございます。

+0

お試しいただいたやり方で質問を編集してください。また、動作しなかったコードを貼り付けてください。 :) –

+0

'PCollection pipeLine = MemPipeline.collectionOf("パイナップル "、"バナナ "、"オレンジ "); \t \t PCollection B = pipeLine.parallelDo(新しいDoFn <文字列、整数>(){ \t \t \tプライベート静的最終長いのserialVersionUID = 1L; \t \t \t @Override \t \t \t公共ボイドプロセス(文字列入力、エミッタエミッタ){ \t \t \t \tエミッタ.emit(入力。長さ); \t \t \t} \t \t}、ints()); \t \t b.write(新しいAvroParquetFileTarget( "D:¥Tutorials¥¥WorkSpace¥¥Crunch¥¥resources¥¥output")); \t} –

+0

あなたのお返事ありがとう@SagarKulkarni、上記のコードは試しています。 –

答えて

1

あなたはアブロスキーマとあなたの寄木細工のデータの同じ構造が含まれているアブロからコンパイルされたクラスを持っている場合、あなたは次のよう

AvroParquetFileSource<MyClassCompiled> avroParquetFileSource = 
new AvroParquetFileSource<MyClassCompiled>(
        new Path(input), Avros.records(MyClassCompiled.class) 
); 

でそれを読んで、この

のような寄木細工を書くことができます
Target parquetFileTarget = new AvroParquetFileTarget(outputPath); 
mypcollection.write(avroParquetFileSource); 
関連する問題