2016-05-17 12 views
0

我々のアプリケーションは、BigQueryのバッチAPIを使用してクエリを送信し、送信します。私たちは、仕事が1時間以上 "実行中"の状態になっているクエリのバッチをいくつか提出しました。すべてのシステムはstatus.cloud.google.comに従って緑色ですが、それは私たちにとっては当てはまりません。BigQuery - バッチAPI経由でクエリを送信できません

他の誰でも同様の現象が起こりますか? FWIW - BQのWeb UIを介したクエリの提出は、前述のスタックドジョブからの同時レート制限を超過しているため、私たちのためにもう機能していません...

+0

私たちが調査できるように、この状態に止まっているジョブのproject_id:job_idを指定してください。エラーが発生した場合は、このエラーが発生します。ありがとうございました。 –

+0

マイケル - 私は仕事のIDを持っていない、プロジェクトIDは十分ですか?プロジェクトID:dev-10450-26 –

+0

APIエクスプローラでジョブIDを取得できました:dev-10450-26:job_Ms63bsBDU8wCKP1KDcyf3Td-E9E –

答えて

1

あなたはバッチAPIちょうど良い。これは非常に迅速かつ計算コストの高いクエリで実行されているように見えます。したがって、それらはすべて互いに競争し、減速します。

18日(ほぼ数回)に約200件のジョブを提出し、17日に約25万件のジョブを提出したようです。

これらはすべて対話型のクエリ優先度で送信され、ほとんどすべてがすぐにレート制限超過エラーで失敗し、送信した各クエリのセットから最大50個のクエリが実行されます。

これらのクエリのいくつかを点検すると、計算コストの高いクエリになります。クエリの課金層(https://cloud.google.com/bigquery/pricing#high-compute)をご覧ください。このテイクアイテムは、ここのjobs.getの出力にあります:https://cloud.google.com/bigquery/docs/reference/v2/jobs#statistics.query.billingTier。これらのクエリは、同じ(または少なくとも非常に類似した)中間結合結果を再計算するようにも見えます。

50個の大きなクエリを同時に実行すると、リソースの競合と速度の低下が発生します。あなたはconcurrent rate limitかなり厳しいがあり、対話型のクエリの優先順位、でクエリの多くを提出する

  • は、あなたがに見てみたいことがありますいくつかの問題があります。多数のクエリを同時に実行する場合は、バッチクエリ優先度を使用してみてください。 https://cloud.google.com/bigquery/docs/reference/v2/jobs#configuration.query.priority

  • クエリの組み合わせは、最適化できるように見えます。 1回の結合操作ですべてのクエリで共通の中間結果を実体化し、それらの結果に対してより多くの小さなクエリを実行できますか?
  • あなたはすぐに多くの計算コストが高いクエリを実行する必要がある場合:
    • あなたはあなたのクエリのスループットを向上させるために追加のスロットを購入することができます。 https://cloud.google.com/bigquery/pricing#slotsを参照してください。
    • 計算コストの高いクエリが互いに競合するのを防ぐには、クライアント側で自分自身を制限することができます。一度にいくつかのクエリだけを実行することを検討してください。全体的なスループットが向上する可能性があります。
  • バッチインサートAPIを使用しています。これにより、1つのHTTP要求で複数のクエリを挿入することが非常に効率的になります。私は、大規模なデータ分析ではHTTP接続が待ち時間の原因になることはめったにないので、クライアントコードをシンプルに保つために、通常のjobs.insert APIを使用してジョブを1つずつ挿入する方が好きです。
+0

応答に感謝します。多くのクエリが共通のサブクエリを共有するため、中間結合テーブルを作成する可能性があります。この時点では、50以上のクエリを同時にバッチ処理することはありませんでした。明らかに、このバッチで適切なミックスが見つかったため、処理が遅くなりました。私たちを困惑させているのは、コンカレントレートの制限がこのケースで最大90分に抑えられているからです。このプロジェクトで追加のインタラクティブなクエリを防止するのは、あなたが言及したリソースの競合によるものですか? –

+0

あなたのアドバイスごとに私は中間結果テーブルを使用するようにクエリを再検討しています。残念ながら、私はこのテーブルを作成することができません - 私はBQのWeb UIを/インタラクティブ&バッチモード無制限の無制限(無理矢理)で実行しようとしました(現在の試行は10分以上実行されています)。それは非常に簡単なクエリで、LIMIT 1000を設定した場合と同様に有効です。約5秒で完了します。あなたがこの質問をPMに伺ってもらえますか? –

+0

中間作成テーブルがまだ実行中 - 2時間25分経過 –

関連する問題