使用自动检测,ALLOW_FIELD_ADDITION和ignore_unknown_values选项运行BigQuery加载作业时出错,

时间:2019-02-08 16:10:13

标签: google-bigquery

我们已经将BigQuery加载作业与 autodetect ALLOW_FIELD_ADDITION ignore_unknown_values 选项一起使用了一年多,但最近我们收到了StackDriver日志上出现以下错误:

jobStatus: {
  additionalErrors: [
   0: {
    code:  13         
    message:  "An internal error occurred and the request could not be completed. Error: 9843239"         
   }
  ]
  error: {
   code:  13        
   message:  "An internal error occurred and the request could not be completed. Error: 9843239"        
  }
  state:  "DONE"       
 }

我进行了调查,发现当JSON有效负载包含一个或多个新字段时会发生此错误,理论上应在加载JSON有效负载之前将其添加到BigQuery表中。

示例:

我正在加载两个JSON文件。第一个将创建表并加载数据:

$ cat ./example1.json 
{ "id": 123, "name": "John Doe" }

$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --ignore_unknown_values --source_format=NEWLINE_DELIMITED_JSON test_dataset.test_table ./example1.json
Upload complete.
Waiting on bqjob_r511e2ad924d17629_00000168cdc46bab_1 ... (0s) Current status: DONE

创建的表:

enter image description here enter image description here

第二个JSON文件,带有一个新字段:

$ cat ./example2.json
{ "id": 234, "name": "John Doe Jr", "age": 19 }

$ bq load --autodetect --schema_update_option=ALLOW_FIELD_ADDITION --ignore_unknown_values --source_format=NEWLINE_DELIMITED_JSON test_dataset.test_table ./example2.json
Upload complete.
Waiting on bqjob_r263276fb02033623_00000168cdc5b0ca_1 ... (0s) Current status: DONE   
BigQuery error in load operation: Error processing job 'xxx:bqjob_r263276fb02033623_00000168cdc5b0ca_1': An internal error occurred and the request could not be completed. Error: 9843239

如果我不使用--ignore_unknown_values,它将成功加载,并将新字段添加到表中。

文档:

  

configuration.load.ignoreUnknownValues布尔型[可选]

     

指示BigQuery是否应允许不包含的其他值   在表模式中表示。如果为true,则额外值为   忽略了。如果为false,则带有额外列的记录被视为错误   记录,如果有太多不良记录,则表示无效错误   返回工作结果。默认值为false。的   sourceFormat属性确定BigQuery视为额外内容   值:CSV:尾随列JSON:命名值不匹配任何   列名

看起来--ignore_unknown_values的行为已被修改,当它为false时,带有额外字段的JSON负载不再是不好的记录。

有人可以确认吗?

编辑:它在我发布的同一天(格林尼治标准时间19:30之后)固定。从01/29开始发生此错误。请忽略。

0 个答案:

没有答案