2017-10-02 4 views
1

BigQueryクエリに時間がかかる理由を理解しようとしています。__SHUFFLE1_REPARTITION0からのBigQueryのスピードタイム

Explanationの出力を解釈するためのいくつかの記事がありますが、ここで何が起こっているのかを理解するのに役立つ情報はありませんでした。

なぜ__PSRC___SHUFFLE2_0からの読み取りと__SHUFFLE2_REPARTITION0への書き込みに時間がかかるのですか?これは新しいキーで再パーティション化されていますか?前のステップ、13は、またHASH($290)

によって書かれましたが(これは、現在の70%がこのステップに費やされているの我々のデータのサンプル上の200S、程度かかります。

(私はできません役立つ場合、私は編集さバージョンを投稿することができますが、ここでは全体のクエリを投稿してください。)

Query Timing

+0

ステージ2とステージ5は面白いです。ステージ2は2M行から7Mに移行し、ステージ5は140Mの出力で10M行を取得します。私は結合が爆発していると思う。クエリされたデータのサイズはどれくらいですか? –

答えて

2

避け爆発が参加する。

をはるかにコンテックスがなければtは、私は何が起こっているかわかりませんが、ステージ2と5が面白いです:

  • ステージ2は7M
  • ステージ5に2M行から行く140Mの出力で10 M行を取得します。

私は爆発の疑いがあります。クエリされたデータのサイズはどれくらいですか?

これ以上のデータがなくても、BigQueryがこれらのような分解結合を処理できることはうれしく思っていますが、分解結合を行うときには非常に高速なクエリは期待できません。

詳細については、https://stackoverflow.com/a/46533335/132438を参照してください。

+0

OK、ありがとうございます。ステージ2はUNNEST、ステージ5はJOINです。私が調査します。 – Maximilian

+0

Shuffle&Repartitionが爆発的な参加をしている場合、その時間はいつも使われているのですか?なぜ費用は結合自体から来ないのですか? – Maximilian

+0

BigQueryは、クエリがスキャンする行数を調べ、このジョブに100スロットを与えることを決めます。突然このクエリの行数が10000倍以上になり、より多くのノードが必要になります(結合が爆発的になります)。これらのノードを機能させるために、BigQueryは飛行中のすべてのデータをシャッフルして再分割する必要があります。だから、これは遅いステップになります。 –

関連する問題