0

ローカルに実行されるデータフローパイプラインがあります。目的は、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) 
    ); 
+2

最初に行うことは、エラーが実際に何であるかを調べることです。 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)。その後、詳細を知ることになります。 –

+2

エラー報告を改善するためhttps://issues.apache.org/jira/browse/BEAM-1235を提出しました。 – jkff

+0

@jkffさん、ありがとうございました。とても助かりました。そして、これを最初からやっていたでしょう:) – plumSemPy

答えて

3

SDKは、ユーザーにそれを報告エラー/例外を嚥下されず、以下のよう

関連するコード部分です。これはおそらくスキーマの問題です。あなたがいずれかの方法でジョブの詳細をフェッチする必要が起こっている実際のエラーを取得するには、次の

  1. CLIをからbq show -j job beam_job_<xxxx>_00001-1
  2. ブラウザ/ウェブ:使用ページhereの下部にある「それを試してみてください」 。

@jkffはエラー報告を改善するためにhereという問題を提起しました。

関連する問題