1

私は現在、Pig Latinで大きな入力テーブル(10 ^ 7行)を処理しています。このテーブルは、あるフィールドでフィルター処理され、処理され、処理された行が元のテーブルに戻されます。処理された行が元のテーブルに戻されると、フィルターの基になるフィールドが変更され、後続のフィルター処理で処理されたフィールドが無視されるようになります。

Apache Pigでは、最初に処理済みテーブルと未処理テーブルをフィルタリング基準で分割し、処理を適用して2つのテーブルを結合し直すか、最初のテーブルをフィルタリングし、フィルター処理されたテーブルにプロセスを適用して左結合を実行する方が効率的ですか。主キーを使用する元のテーブル?

4

1 に答える 1

2

どちらが実際に速く実行されるかはわかりません。両方のバージョンを実行して実行時間を比較するだけです:)

最初の解決策(分割してから結合)を選択する場合は、結合操作で最初に2つのテーブルのうち小さい方(存在する場合)を指定してください(おそらく、新しく追加されたデータになります)。Pigのドキュメントによると、最後のテーブルは「メモリに取り込まれず、代わりにストリーミングされる」ため、パフォーマンスが向上することが示されています。

于 2012-11-04T18:40:51.453 に答える