2017-07-19 30 views

答えて

3

特定のクエリでメモリ不足が発生した場合、BigQueryはデータを削除しません。代わりにエラーが発生します。行サイズを〜100MB以下に保つようにしてください。これを超えるとエラーが発生します。この表の164656行があります

#standardSQL 
SELECT STRING_AGG(word) AS words FROM `bigquery-public-data.samples.shakespeare`; 

、このクエリは、(サイズはメガバイトの周り)1168286の文字で文字列を作成します:あなたはこのような例で大きな文字列を作成してみてくださいすることができます。あなたは、実行の単一ノード上の数百メガバイトのために何か以上のものが必要クエリを実行する場合は、しかし、エラーを見てから始めましょう:

#standardSQL 
SELECT STRING_AGG(CONCAT(word, corpus)) AS words 
FROM `bigquery-public-data.samples.shakespeare` 
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000)); 

エラーでこの結果:

Resources exceeded during query execution. 

UIの[説明]タブをクリックすると、ステージ1でエラーが発生し、結果がSTRING_AGGであることがわかります。この場合、文字列の長さは3,303,599,000文字(約3.3 GB)になります。エリオットの答えに追加

+0

「説明」のようなクエリ(任意のレポートまたは何か)を処理するときに、異なるノードによって使用されているデータの量を確認する方法はありますか? – divyum

+0

クエリが完了するまで待つ必要があります。実行の戦略が実行中に変更される可能性があるため、[説明]タブを参照してください。 –

+0

私は説明タブをチェックしました。それは入力と出力の行の数だけを提供し、ノードごとのデータの統計は提供しません。 – divyum

1

- 修正方法:

#standardSQL 
SELECT STRING_AGG(CONCAT(word, corpus)) AS words 
FROM `bigquery-public-data.samples.shakespeare` 
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000)); 

をしかし、あなたが働いて解を得るために連結文字列の数を制限することができます:

このクエリでは、(エリオットの)失敗し

#standardSQL 
SELECT STRING_AGG(CONCAT(word, corpus) LIMIT 10) AS words 
FROM `bigquery-public-data.samples.shakespeare` 
CROSS JOIN UNNEST(GENERATE_ARRAY(1, 1000)); 
関連する問題