Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery BigQuery手动加载,但不通过JavaSDK加载_Google Bigquery_Google Cloud Storage_Google Cloud Dataflow - Fatal编程技术网

Google bigquery BigQuery手动加载,但不通过JavaSDK加载

Google bigquery BigQuery手动加载,但不通过JavaSDK加载,google-bigquery,google-cloud-storage,google-cloud-dataflow,Google Bigquery,Google Cloud Storage,Google Cloud Dataflow,我有一个本地运行的数据流管道。目标是使用TEXTIO读取JSON文件,创建会话并将其加载到BigQuery中。给定这种结构,我必须在GCS中创建一个临时目录,然后使用它将其加载到BigQuery中。以前我有一个数据模式错误,无法加载数据,请参阅。这个问题已经解决 所以现在,当我在本地运行管道时,它以将一个临时JSON换行符分隔的文件转储到GCS中结束。然后SDK给了我以下信息: Starting BigQuery load job beam_job_xxxx_00001-1: try 1/3 I

我有一个本地运行的数据流管道。目标是使用TEXTIO读取JSON文件,创建会话并将其加载到BigQuery中。给定这种结构,我必须在GCS中创建一个临时目录,然后使用它将其加载到BigQuery中。以前我有一个数据模式错误,无法加载数据,请参阅。这个问题已经解决

所以现在,当我在本地运行管道时,它以将一个临时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中。令人费解的是,如果我转到BigQueryUI并从GCS加载SDK的数据流管道手动转储的同一个临时文件,在同一个表中,它工作得很好

相关代码部分如下所示:

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)
      );

SDK正在接受错误/异常,并且没有将其报告给用户。这很可能是一个模式问题。要获取正在发生的实际错误,您需要通过以下方式获取作业详细信息:

  • CLI-
    bq show-j作业梁uu作业uu 00001-1
  • 浏览器/Web:使用页面底部的“试用”

  • @jkff提出了一个问题来改进错误报告。

    SDK正在接受错误/异常,并且没有向用户报告它。这很可能是一个模式问题。要获取正在发生的实际错误,您需要通过以下方式获取作业详细信息:

  • CLI-
    bq show-j作业梁uu作业uu 00001-1
  • 浏览器/Web:使用页面底部的“试用”

  • @jkff提出了一个改进错误报告的问题。

    首先要做的是找出错误的实际原因。获取BigQuery加载作业id(job beam_job_00001-1)并从命令行(
    bq show-j job beam_job_00001-1
    )获取详细信息,或者使用页面底部的“try it”通过浏览器获取详细信息()。然后你会知道更多的细节。我提交了改进错误报告的文件。谢谢@jkff这会非常有帮助,并且会首先阻止这一切:)@GrahamPolley非常感谢你提供的这些信息。我从表格中调试了它,不过学到了两件事。由于BigQueryUI中有一个“作业历史记录”部分,我认为这是一个详尽的列表,因为我的SDK作业没有在那里列出,所以我没有寻找另一个作业获取者,将作业获取者链接到UI作业历史记录也会很好。@plumSemPy-好消息!好的,我现在添加一个答案,这样其他人就知道如果遇到相同的问题该怎么办。首先要做的是找出错误的实际原因。获取BigQuery加载作业id(job beam_job_00001-1)并从命令行(
    bq show-j job beam_job_00001-1
    )获取详细信息,或者使用页面底部的“try it”通过浏览器获取详细信息()。然后你会知道更多的细节。我提交了改进错误报告的文件。谢谢@jkff这会非常有帮助,并且会首先阻止这一切:)@GrahamPolley非常感谢你提供的这些信息。我从表格中调试了它,不过学到了两件事。由于BigQueryUI中有一个“作业历史记录”部分,我认为这是一个详尽的列表,因为我的SDK作业没有在那里列出,所以我没有寻找另一个作业获取者,将作业获取者链接到UI作业历史记录也会很好。@plumSemPy-好消息!好的,我现在添加一个答案,这样其他人知道如果遇到相同的问题该怎么办。