Apache's Beam
sdkバージョン0.2.0-incubating-SNAPSHOT
を使用していて、Dataflow
ランナーでbigtableにデータをプルしようとしています。残念ながらNullPointerException
を私のデータフローパイプラインを実行するときに私はBigTableIO.Write
を私のシンクとして使用しています。すでに私のBigtableOptions
をチェックしていて、私の必要に応じてパラメータが正常です。Apache BeamのデータフローSDKを使用してBigTableに書き込むときにNullPointerExceptionが発生する
は基本的に、私が作成し、私のパイプラインのいくつかの時点で、私は私の希望のBigtableへPCollection<KV<ByteString, Iterable<Mutation>>>
を書き込むためのステップがあります。
final BigtableOptions.Builder optionsBuilder =
new BigtableOptions.Builder().setProjectId(System.getProperty("PROJECT_ID"))
.setInstanceId(System.getProperty("BT_INSTANCE_ID"));
// do intermediary steps and create PCollection<KV<ByteString, Iterable<Mutation>>>
// to write to bigtable
// modifiedHits is a PCollection<KV<ByteString, Iterable<Mutation>>>
modifiedHits.apply("writting to big table", BigtableIO.write()
.withBigtableOptions(optionsBuilder).withTableId(System.getProperty("BT_TABLENAME")));
p.run();
パイプラインを実行すると、私は正確に指摘、NullPointerException
を得ましたpublic void processElement(ProcessContext c)
方法でBigtableIOクラス:私はBigtableの上で書くことの前に、この方法は、すべての要素を処理しているが、わからない、なぜ私は、このような例外残業を取得しています確認
(6e0ccd8407eed08b): java.lang.NullPointerException at org.apache.beam.sdk.io.gcp.bigtable.BigtableIO$Write$BigtableWriterFn.processElement(BigtableIO.java:532)
私はこのpipelinを実行e。以下のコードによれば、この方法では属性を使用してそれぞれc.element()
を処理しますが、デバッグするためにブレークポイントを設定することはできません。正確にはnull
です。どのようにこの問題を解決するためのアドバイスや提案?
@ProcessElement
public void processElement(ProcessContext c) throws Exception {
checkForFailures();
Futures.addCallback(
bigtableWriter.writeRecord(c.element()), new WriteExceptionCallback(c.element()));
++recordsWritten;
}
ありがとうございます。
いくつかを明確にしてください:1)使用しているSDKのバージョンは何ですか? 2)あなたはどんなランナーを使っていますか? (ダイレクトランナー、Spark、Flink、Dataflow?)それがDataflowなら、あなたはジョブIDを渡すことができますか? – jkff
@jkffコメントありがとうございます。はい、バージョンを含めて私の質問を編集しました。ですから、Dataflowランナーを使用しています。その仕事のIDは2016-09-13_08_29_14-14276852956124203982 –
です。私は仕事とそのクラスパスを調べました。あなたがバージョン0.3.0を使用しているように見えても間違いではないと思います.-インキュベーション - ビーム-SDKS-Java- {core、io}ですが、バージョン0.2.0-incubating-google-cloud-dataflow-javaのスナップショットです。私はこの問題が原因だと信じています - 同じバージョンを使う必要があります(詳細:バージョン0.3.0のBigtableIOは\ @Setupと\ @Teardownメソッドを使用しますが、ランナー0.2.0はまだサポートしていません)。 – jkff