如何在 BigQuery java 客户端加载作业中将“ignoreUnknownValues”选项设置为“true”

Posted

技术标签:

【中文标题】如何在 BigQuery java 客户端加载作业中将“ignoreUnknownValues”选项设置为“true”【英文标题】:How to set `ignoreUnknownValues` option to `true` in BigQuery java client load job 【发布时间】:2017-11-01 07:24:41 【问题描述】:

我有一个 Java 程序,它使用 BigQuery Java 客户端库将 JSON 数据从 Google 云存储导入 BigQuery。我正在使用Table.load() 方法来启动加载作业。对于此加载作业,如何将 ignoreUnknownValues 选项设置为 true

【问题讨论】:

【参考方案1】:

好的,这就是你的做法。

val jobConf = LoadJobConfiguration
  .newBuilder(table.getTableId, path)
  .setIgnoreUnknownValues(true)
  .setFormatOptions(FormatOptions.json())
  .build()
val loadJob = bigQuery.create(JobInfo.newBuilder(jobConf).build())

【讨论】:

【参考方案2】:

你可以看到这个docs

我认为您不能将此标志与“加载”一起使用,因为BigQuery.JobOption 中没有标志“ignoreUnknownValues”:

public Job load(FormatOptions format,
            String sourceUri,
            BigQuery.JobOption... options)
     throws BigQueryException

但您可以尝试“插入”选项而不是“加载”:

public InsertAllResponse insert(Iterable<InsertAllRequest.RowToInsert> rows,
                            boolean skipInvalidRows,
                            boolean ignoreUnknownValues)
                     throws BigQueryException

所以:

response = table.insert(rows, true, true);

【讨论】:

感谢您的回复。 table.insert 对我不起作用,因为我正在从 JSON 文件导入数据。我没有将数据加载到内存中。 在这种情况下你可以使用bq Command-Line Tool 但我的问题是关于 java 客户端库的。

以上是关于如何在 BigQuery java 客户端加载作业中将“ignoreUnknownValues”选项设置为“true”的主要内容,如果未能解决你的问题,请参考以下文章

使用java将json数据流式传输到Bigquery中。不使用作业加载数据

使用java.Without使用作业加载数据,将json数据流式传输到Bigquery

加载作业尝试使用 java 将 json 插入 BigQuery 表时解析错误

如何使用 API 存储在 Google Cloud Storage 中的架构文件在 BigQuery 加载作业上设置架构?

尽管更新了架构,但 BigQuery 架构错误

如何使用 node.js 客户端库计算完成的 BigQuery 作业的行数