从Google Cloud Datalab向BigQuery插入数据时如何调试解析错误?

时间:2015-12-17 17:59:25

标签: python google-bigquery google-cloud-datalab

如何调试从Google Cloud Datalab将数据插入BigQuery的失败?

这是我的代码,但它在最后一行引发了错误。 aggregate_data是一个Pandas数据帧,包含8172行和92列:

ds = 'calculations'
dataset = bq.DataSet(ds)
dataset.create()
schema = bq.Schema.from_dataframe(aggregate_data)
table_name = 'cost_ratios'
temptable = bq.Table(ds + '.' + table_name).create(schema=schema, 
                                                   overwrite=True)
temptable.insert_data(aggregate_data)

这是引发的错误:

RequestException                          Traceback (most recent call last)
<ipython-input-6-b905b654683e> in <module>()
     49 temptable = bq.Table(ds + '.' + table_name).create(schema=schema, 
     50                                                    overwrite=True)
---> 51 temptable.insert_data(aggregate_data)

/usr/local/lib/python2.7/dist-packages/gcp/bigquery/_table.pyc in insert_data(self, data, include_index, index_name)
    364           response = self._api.tabledata_insertAll(self._name_parts, rows)
    365         except Exception as e:
--> 366           raise e
    367         if 'insertErrors' in response:
    368           raise Exception('insertAll failed: %s' % response['insertErrors'])

RequestException: Parse Error

查看BQ,该表已使用正确的架构创建,但其中没有数据。

如何进一步调试?上面的错误并没有告诉我太多,我在BigQuery中看不到任何内容。

1 个答案:

答案 0 :(得分:0)

我的猜测是,Dataframe中的数据不符合Schema。错误来自BigQuery,我相信是因为它试图根据规范中指定的类型解析字段但是失败。

尝试捕获该异常并打印其内容&#39;属性;这将为您提供BigQuery的完整响应,并可能更清楚地解决问题。