ローカルに実行されるデータフローパイプラインがあります。目的は、TEXTIOを使用してJSONファイルを読み取り、セッションを作成してBigQueryにロードすることです。私はGCSで一時ディレクトリを作成し、それを使ってBigQueryにロードしなければなりません。以前はデータスキーマにエラーがあり、データをロードできませんでした。hereを参照してください。その問題は解決されました。私はローカルでパイプラインを実行するとBigQueryが手動でロードされますが、Java SDK経由ではロードされません。
は、だから今、それは一時的なJSONの改行がGCSにファイルを区切りダンプで終わります。 SDKでは、次のように表示されます。
Starting BigQuery load job beam_job_xxxx_00001-1: try 1/3
INFO [main] (BigQueryIO.java:2191) - BigQuery load job failed: beam_job_xxxx_00001-1
...
Exception in thread "main" com.google.cloud.dataflow.sdk.Pipeline$PipelineExecutionException: java.lang.RuntimeException: Failed to create the load job beam_job_xxxx_00001, reached max retries: 3
at com.google.cloud.dataflow.sdk.Pipeline.run(Pipeline.java:187)
at pedesys.Dataflow.main(Dataflow.java:148)
Caused by: java.lang.RuntimeException: Failed to create the load job beam_job_xxxx_00001, reached max retries: 3
at com.google.cloud.dataflow.sdk.io.BigQueryIO$Write$WriteTables.load(BigQueryIO.java:2198)
at com.google.cloud.dataflow.sdk.io.BigQueryIO$Write$WriteTables.processElement(BigQueryIO.java:2146)
エラーは説明的ではなく、データはまだBigQueryに読み込まれません。困惑しているのは、BigQuery UIに移動して、GCSから同じ一時ファイルをSDKのDataflowパイプラインによって手動でダンプして同じテーブルに読み込んだ場合、それが美しく機能するということです。
PipelineOptions options = PipelineOptionsFactory.create();
options.as(BigQueryOptions.class)
.setTempLocation("gs://test/temp");
Pipeline p = Pipeline.create(options)
...
...
session_windowed_items.apply(ParDo.of(new FormatAsTableRowFn()))
.apply(BigQueryIO.Write
.named("loadJob")
.to("myproject:db.table")
.withSchema(schema)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
);
最初に行うことは、エラーが実際に何であるかを調べることです。 BigQueryの読み込みジョブID(ジョブbeam_job_ _00001-1)を取得し、コマンドライン( 'bq show -j job beam_job_ _00001-1')から詳細を取得するか、ブラウザを使用して_"試してみてください"_ページの下部にあります(https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/get)。その後、詳細を知ることになります。 –
エラー報告を改善するためhttps://issues.apache.org/jira/browse/BEAM-1235を提出しました。 – jkff
@jkffさん、ありがとうございました。とても助かりました。そして、これを最初からやっていたでしょう:) – plumSemPy