当启用bigquery错误时,我没有收到错误的记录号

时间:2016-07-21 09:41:37

标签: google-bigquery

我正在使用bigquery command line tool上传这些记录:

{name: "a"}
{name1: "b"}
{name: "c"}

➜ ~ bq load --source_format=NEWLINE_DELIMITED_JSON  my_dataset.my_table ./names.json 

这是我得到的结果:

Upload complete.
Waiting on bqjob_r7fc5650eb01d5fd4_000001560878b74e_1 ... (2s) Current status: DONE   
BigQuery error in load operation: Error processing job 'my_dataset:bqjob...4e_1': JSON table encountered too many errors, giving up. 
Rows: 2; errors: 1.
Failure details:
- JSON parsing error in row starting at position 5819 at file:
file-00000000. No such field: name1.

当我使用bq --format=prettyjson show -j <jobId>时,我得到:

 {
  "status": {
    "errorResult": {
      "location": "file-00000000", 
      "message": "JSON table encountered too many errors, giving up. Rows: 2; errors: 1.", 
      "reason": "invalid"
    }, 
    "errors": [
      {
        "location": "file-00000000", 
        "message": "JSON table encountered too many errors, giving up. Rows: 2; errors: 1.", 
        "reason": "invalid"
      }, 
      {
        "message": "JSON parsing error in row starting at position 5819 at file:
        file-00000000. No such field: name1.", 
        "reason": "invalid"
      }
    ], 
    "state": "DONE"
  }
}

正如您所看到的,我收到一条错误,告诉我哪条线路出错了。 :行:2;错误:1

现在我正在尝试使用max_bad_errors

启用错误
 ➜  ~ bq load --source_format=NEWLINE_DELIMITED_JSON --max_bad_records=3 my_dataset.my_table ./names.json 

这是我收到的:

Upload complete.
Waiting on bqjob_...ce1_1 ... (4s) Current status: DONE   
Warning encountered during job execution:

JSON parsing error in row starting at position 5819 at file: file-00000000. No such field: name1.

当我使用bq --format=prettyjson show -j <jobId>时,我得到:

{
  .
  .
  .
  "status": {
    "errors": [
      {
        "message": "JSON parsing error in row starting at position 5819 at file: file-00000000. No such field: name1.", 
        "reason": "invalid"
      }
    ], 
    "state": "DONE"
  },
}

当我检查时 - 它实际上将好的记录上传到表中并忽略了坏记录,

但现在我不知道错误是什么记录。

这是一个很大的查询错误吗? 可以修复,所以我在启用不良记录时也会收到记录号吗?

1 个答案:

答案 0 :(得分:1)

是的,这就是max_bad_records的作用。如果错误数低于max_bad_records,则加载将成功。错误消息告诉您失败行的开始位置5819和文件名file-00000000。由于您正在进行上传和加载,因此文件名已更改。

之前的&#34;行:2;错误:1&#34;意味着解析了2行,并且有1个错误。它并不总是文件中的第二行。许多工作人员可以并行处理大文件。 Worker n在位置xxxx处开始处理,解析了两行,并发现错误。它还会报告相同的错误消息,显然2并不意味着文件中的第2行。对于工人n来说,从头开始扫描文件以找出它开始的哪一行是没有意义的。相反,它只会报告线的起始位置。