从 Google Cloud Datalab 向 BigQuery 插入数据时如何调试解析错误?
How to debug parse error when inserting data to BigQuery from 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,table 已使用正确的架构创建,但其中没有数据。
如何进一步调试?上面的错误并没有告诉我太多信息,而且我在 BigQuery 中也看不到任何信息。
我的猜测是 Dataframe 中有不符合 Schema 的数据。错误来自 BigQuery,我认为是由于它试图根据规范中指定的类型解析字段但失败了。
尝试捕获该异常并打印其 'content' 属性;这将为您提供 BigQuery 的完整响应,并可能会更清楚地说明问题。
如何调试无法将数据从 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,table 已使用正确的架构创建,但其中没有数据。
如何进一步调试?上面的错误并没有告诉我太多信息,而且我在 BigQuery 中也看不到任何信息。
我的猜测是 Dataframe 中有不符合 Schema 的数据。错误来自 BigQuery,我认为是由于它试图根据规范中指定的类型解析字段但失败了。
尝试捕获该异常并打印其 'content' 属性;这将为您提供 BigQuery 的完整响应,并可能会更清楚地说明问题。