4

joinHint と joinWithTiny、joinWithHuge の使用の違いは何ですか?

joinHint に関しては、BROADCAST_HASH_FIRST を使用できます: 最初の結合入力が 2 番目の結合入力よりもはるかに小さいというヒント。REPARTITION_HASH_FIRST: 最初の結合入力が 2 番目の結合入力よりも少し小さいことを示します。

一方、 joinWithHuge と joinWithTiny も使用できます

彼らは同じですか?joinWithTiny は BROADCAST_HASH_FIRST を使用していますか?

それらを活用する利点は、Flink ジョブが結合データのサイズをチェックする時間を節約できることですか?

4

1 に答える 1

6

はい、DataSet.joinWithTiny(DataSet other)のショートカットでDataSet.join(DataSet other, JoinHint.BROADCAST_HASH_SECOND)ありDataSet.joinWithHuge(DataSet other)、 のショートカットですDataSet.join(DataSet other, JoinHint.BROADCAST_HASH_FIRST)

Apache Flink は、コストベースのオプティマイザーを備えています。コストベースの最適化では、演算子の入力サイズを見積もる必要があります。これは、Flink プログラムで一般的なユーザー定義関数の設定では非常に困難 (または不可能) になる可能性があります。Flink のオプティマイザーが意味のあるサイズの見積もりを取得できない場合、ブロードキャストの代わりに再分割などの堅牢でスケーラブルな実行戦略にフォールバックします。オプティマイザーのヒントにより、ユーザーは使用する結合戦略を正確に指定できます。ユーザーが処理されるデータに関するいくつかのプロパティを知っている場合、これはプログラムのパフォーマンスを向上させるのに役立ちます。

したがって、オプティマイザーのヒントは、見積もりを取得する時間を短縮することではなく、ユーザーが Flink プログラムの実行方法を完全に制御できるようにすることです。

于 2015-07-18T07:53:01.357 に答える