データ移行のトラブルシューティング

このページでは、BigQuery にデータを転送または読み込む際に発生する問題のトラブルシューティング方法について説明します。BigQuery Data Transfer Service、 Google Cloud間のネットワーク接続、Amazon Web Services(AWS)、Cloud SQL、Virtual Private Cloud(VPC)ネットワーク、Cloud Storage からの CSV データ読み込みジョブに関連する一般的なエラーを解決できます。

転送構成のトラブルシューティング

BigQuery Data Transfer Service の問題の解決については、転送構成のトラブルシューティングをご覧ください。

外部またはパートナーのデータソースから転送を設定または実行する場合は、サードパーティ転送の設定のトラブルシューティングをご覧ください。

INFORMATION_SCHEMA ビューでジョブを診断する

INFORMATION_SCHEMA.JOBS ビューをクエリして、失敗した読み込みジョブや処理の遅い読み込みジョブと転送クエリをほぼリアルタイムで診断できます。読み込みジョブまたは転送クエリが失敗した場合は、error_result 列と errors 列を調べて、スキーマの不一致、割り当て上限、権限エラーなどの根本原因を特定します。

次の例では、INFORMATION_SCHEMA.JOBS をクエリして、過去 24 時間に失敗した読み込みジョブのエラーの詳細を取得します。

SELECT
  job_id,
  creation_time,
  user_email,
  error_result.reason AS error_reason,
  error_result.message AS error_message,
  errors
FROM
  `region-REGION`.INFORMATION_SCHEMA.JOBS
WHERE
  job_type = 'LOAD'
  AND state = 'DONE'
  AND error_result IS NOT NULL
  AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
ORDER BY
  creation_time DESC;

<var>REGION</var> は、データセットのリージョン名(us や europe-west1 など)に置き換えます。

転送ネットワーク接続のトラブルシューティング

外部のクラウド プロバイダまたはプライベート データベース インスタンスからデータを転送する場合、ネットワーク ルーティングまたはファイアウォール ルールによって接続がブロックされることがあります。次のセクションでは、VPN アタッチメントとプライベート ネットワーク接続のトラブルシューティングについて説明します。

AWS-Google Cloud VPN とネットワーク アタッチメント

ネットワーク アタッチメントの設定で問題が発生した場合は、次の操作を行います。

  • AWS コンソールと Google Cloud コンソールの両方で VPN 接続が稼働していることを確認します。
  • VPN ログでエラーやパケットのドロップを確認します。
  • AWS とGoogle Cloud の両方のルーティング テーブルが正しく構成されていることを確認します。
  • AWS セキュリティ グループと Google Cloud ファイアウォール ルールの両方で、必要なポートが開いていることを確認します。

VPN アタッチメントの構成の詳細については、AWS-Google Cloud VPN とネットワーク アタッチメントを作成するをご覧ください。

Cloud SQL インスタンスへのアクセス

ネットワーク設定の設定で問題が発生した場合は、次の操作を行います。

  • VPC ピアリングが確立され、ルートが正しく設定されていることを確認します。
  • ファイアウォール ルールで必要なポートのトラフィックが許可されていることを確認します。
  • Cloud SQL Proxy のログをチェックしてエラーがないか確認し、正しく実行されていることを確認します。
  • ネットワーク アタッチメントが正しく設定され、接続されていることを確認します。

プライベート データベース アクセスの構成の詳細については、Cloud SQL インスタンスに接続するをご覧ください。

CSV ファイルの読み込みに関するトラブルシューティング

Cloud Storage から BigQuery に CSV データを読み込むときに、形式エラー、ファイルサイズの上限、スキーマの自動検出の問題により、ジョブが失敗することがあります。CSV の読み込みに関する一般的なエラーを解決するには、次のセクションをご覧ください。

解析エラーのトラブルシューティング

CSV ファイルの解析中に問題が発生すると、読み込みジョブの errors リソースにエラーの詳細が入力されます。

通常、こうしたエラーでは、バイト オフセットで問題のある行の先頭が特定されます。非圧縮ファイルの場合は、--recursive 引数を指定して gcloud storage を使用し、関連する行にアクセスできます。

たとえば、bq load コマンドを実行すると、エラーが発生します。

bq load
    --skip_leading_rows=1 \
    --source_format=CSV \
    mydataset.mytable \
    gs://my-bucket/mytable.csv \
    'Number:INTEGER,Name:STRING,TookOffice:STRING,LeftOffice:STRING,Party:STRING'

出力のエラーは次のようになります。

Waiting on bqjob_r5268069f5f49c9bf_0000018632e903d7_1 ... (0s)
Current status: DONE
BigQuery error in load operation: Error processing job
'myproject:bqjob_r5268069f5f49c9bf_0000018632e903d7_1': Error while reading
data, error message: Error detected while parsing row starting at position: 1405.
Error: Data between close quote character (") and field separator.
File: gs://my-bucket/mytable.csv
Failure details:
- gs://my-bucket/mytable.csv: Error while reading data,
error message: Error detected while parsing row starting at
position: 1405. Error: Data between close quote character (") and
field separator. File: gs://my-bucket/mytable.csv
- Error while reading data, error message: CSV processing encountered
too many errors, giving up. Rows: 22; errors: 1; max bad: 0; error
percent: 0

上記のエラーによれば、ファイルに形式エラーがあります。ファイルの内容を表示するには、gcloud storage cat コマンドを実行します。

gcloud storage cat 1405-1505 gs://my-bucket/mytable.csv --recursive

出力は次のようになります。

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican
18,Ulysses S. Grant,"March 4, 1869",
...

ファイルの出力から、"April 15, "1865 の引用符の位置がずれていることが問題であることがわかります。

圧縮 CSV ファイル

報告されるバイト オフセットは非圧縮ファイルの位置を示すため、圧縮された CSV ファイルの場合は、解析エラーのデバッグがより困難になります。次の gcloud storage cat コマンドは、Cloud Storage からファイルをストリーミングして解凍し、適切なバイト オフセットを特定して形式エラーのある行を表示します。

gcloud storage cat gs://my-bucket/mytable.csv.gz | gunzip - | tail -c +1406 | head -n 1

出力は次のようになります。

16,Abraham Lincoln,"March 4, 1861","April 15, "1865,Republican

割り当てエラーをトラブルシューティングする

このセクションの情報を使用して、BigQuery への CSV ファイルの読み込みに関連する割り当てまたは上限のエラーをトラブルシューティングします。

bq load コマンドで --allow_quoted_newlines フラグを使用して大規模な CSV ファイルを読み込むと、このエラーが発生する可能性があります。

エラー メッセージ

Input CSV files are not splittable and at least one of the files is larger than
the maximum allowed size. Size is: ...

解決策

この割り当てエラーを解決するには、次の操作を行います。

  • --allow_quoted_newlines フラグを false に設定します。
  • CSV ファイルをそれぞれ 4 GB 未満の小さなチャンクに分割します。

BigQuery にデータを読み込む際に適用される上限について詳しくは、読み込みジョブをご覧ください。

スキーマ自動検出のトラブルシューティング

CSV ファイルのスキーマを自動検出するときに、次のエラーが発生することがあります。

エラー: Error while reading data, error message: CSV processing encountered too many errors, giving up.

このエラーは、CSV ファイルに文字列値を含むヘッダー行があり、BigQuery がそれをヘッダーとして検出しなかった場合に発生することがあります。--skip_leading_rows オプションを使用して、ヘッダー行をスキップできます。