2017-12-11 5 views
1

Apache Beam 2.1.0には、BigQueryから読み取ったテンプレートパイプラインのバグがあり、これは一度しか実行できないことを意味していました。詳細はこちらをhttps://issues.apache.org/jira/browse/BEAM-2058BigQueryIO withTemplateCompatibilityを使用してパフォーマンスを読み取る

これは、ビーム2.2.0のリリースで修正されました、あなたは今withTemplateCompatibilityオプションを使用したBigQueryから読み取ることができ、あなたのテンプレートパイプラインは現在、複数回実行することができます。

pipeline 
    .apply("Read rows from table." 
     , BigQueryIO.readTableRows() 
        .withTemplateCompatibility() 
        .from("<your-table>") 
        .withoutValidation()) 

この実装では、私が今、今、一貫して完了するために、45-50分を取って8-11分で実行したものを一括パイプラインを持って、BigQueryIO読み出し動作に巨大なパフォーマンスコストが付属しているようです。両方のパイプラインの唯一の違いは.withTemplateCompatibility()です。

パフォーマンスが大幅に低下した理由と、改善する方法があるかどうかを確認しようとしています。

ありがとうございました。

解決策: jkffの入力に基づいています。

pipeline 
    .apply("Read rows from table." 
     , BigQueryIO.readTableRows() 
        .withTemplateCompatibility() 
        .from("<your-table>") 
        .withoutValidation()) 
    .apply("Reshuffle", Reshuffle.viaRandomKey()) 

答えて

1

私は、これはwithTemplateCompatibilityは、この読み取りステップのためdynamic rebalancingを無効にした場合のコストで来ることに起因している疑いがあります。

小さなデータや中程度のデータを読み込んでいて、非常に重い処理を行っている場合にのみ、大きなインパクトがあると思います。この場合、にReshuffle.viaRandomKey()を追加してみてください。一時的なデータのコピーを実現しますが、下流の処理をよりよく並列化します。

+0

ありがとう、jkff。これにより問題は解決されましたが、再シャッフル変換は廃止予定で内部使用するとマークされています。 – Ken

+0

交換が必要であることがわかっている不幸な場所ですが、まだ使用していないものがあります(今は安全に使用できます)。 – jkff

関連する問題