BigQuery的大JSON记录未显示

时间:2017-08-24 15:40:08

标签: google-bigquery

我想尝试将大型JSON记录对象上传到BigQuery。

我说的是每个1.5 MB的JSON记录,具有复杂的嵌套模式,最高可达7度。

为简单起见,我开始在一行上加载一条记录文件。

起初我尝试让BigQuery自动检测我的架构,但这导致表没有响应,我无法执行查询,尽管它说它至少有一个记录。

然后,假设我的架构对于加载器来说太难以反转,我尝试自己编写架构然后我尝试用单个记录加载我的文件。

起初我得到一个简单的错误,只是“无效”。

bq load --source_format=NEWLINE_DELIMITED_JSON invq_data.test_table 
my_single_json_record_file
Upload complete.
Waiting on bqjob_r5a4ce64904bbba9d_0000015e14aba735_1 ... (3s) Current 
status: DONE   
BigQuery error in load operation: Error processing job 'invq-
test:bqjob_r5a4ce64904bbba9d_0000015e14aba735_1': JSON table 
encountered too many errors, giving up. Rows:
1; errors: 1.

在检查作业错误后,我只是给了我以下内容:

"status": {
"errorResult": {
  "location": "file-00000000", 
  "message": "JSON table encountered too many errors, giving up. Rows: 1; errors: 1.", 
  "reason": "invalid"
}, 
"errors": [
  {
    "location": "file-00000000", 
    "message": "JSON table encountered too many errors, giving up. Rows: 1; errors: 1.", 
    "reason": "invalid"
  }
], 
"state": "DONE"

},

经过几次尝试创建新表后,它实际上开始在命令行上成功,而没有报告错误:

bq load --max_bad_records=1 --source_format=NEWLINE_DELIMITED_JSON invq_data.test_table_4 my_single_json_record_file
Upload complete.
Waiting on bqjob_r368f1dff98600a4b_0000015e14b43dd5_1 ... (16s) Current status: DONE

状态检查器没有错误...

  "statistics": {
    "creationTime": "1503585955356", 
    "endTime": "1503585973623", 
    "load": {
      "badRecords": "0", 
      "inputFileBytes": "1494390", 
      "inputFiles": "1", 
      "outputBytes": "0", 
      "outputRows": "0"
    }, 
    "startTime": "1503585955723"
  }, 
  "status": {
    "state": "DONE"
  },

但我的表格中没有添加任何实际记录。

我试图从WebUI执行相同的操作,但结果是一样的。已完成的工作是绿色的,但没有添加实际记录。

我还能做些什么来检查数据下沉的位置吗?也许还有一些日志?

我可以想象,我可能处于2 MB JSON行大小限制的边缘,但如果是这样,是否应将此报告为错误?

提前感谢您的帮助!!

编辑:

事实证明,我的架构的复杂性在这里有点恶魔。 我的json文件是有效的,但我的复杂模式有几个错误。

事实证明,我必须简化这样的架构,因为我得到了一批新的数据,其中单个json实例更多30MB,我必须以更关系的方式重构这些数据,同时插入更小的行在数据库中。

当架构分散在多个实体(ergo,简化)中时,有趣的是,架构的实际错误/不一致性开始实际显示在返回的错误中,并且更容易修复它们。 (大多数情况下,它是新的嵌套无证数据,但我还是不知道......但仍然是我的坏事)。

这里的教训是,当一个表架构太长时(我没有测试多少精确太长)BigQuery只是隐藏在报告太多错误的背后。 但是,您应该考虑简化数据的架构(/结构)。

0 个答案:

没有答案