Datalab 不填充 bigQuery 表
Posted
技术标签:
【中文标题】Datalab 不填充 bigQuery 表【英文标题】:Datalab does not populate bigQuery tables 【发布时间】:2016-02-26 16:29:39 【问题描述】:您好,我在 datalab 上使用 ipython 笔记本时遇到问题。
我想将表的结果写入 bigQuery 表,但它不起作用,有人说要使用 insert_data(dataframe) 函数,但它没有填充我的表。 为了简化问题,我尝试读取一个表并将其写入刚刚创建的表(具有相同的模式),但它不起作用。谁能告诉我哪里错了?
import gcp
import gcp.bigquery as bq
#read the data
df = bq.Query('SELECT 1 as a, 2 as b FROM [publicdata:samples.wikipedia] LIMIT 3').to_dataframe()
#creation of a dataset and extraction of the schema
dataset = bq.DataSet('prova1')
dataset.create(friendly_name='aaa', description='bbb')
schema = bq.Schema.from_dataframe(df)
#creation of the table
temptable = bq.Table('prova1.prova2').create(schema=schema, overwrite=True)
#I try to put the same data into the temptable just created
temptable.insert_data(df)
【问题讨论】:
【参考方案1】:调用 insert_data 将执行 HTTP POST 并在完成后返回。但是,数据显示在 BQ 表中可能需要一些时间(最多几分钟)。在使用桌子之前尝试等待一段时间。我们可能会在未来的更新中解决这个问题,see this
在准备好之前阻止的hacky方法应该是这样的:
import time
while True:
info = temptable._api.tables_get(temptable._name_parts)
if 'streamingBuffer' not in info:
break
if info['streamingBuffer']['estimatedRows'] > 0:
break
time.sleep(5)
【讨论】:
以上是关于Datalab 不填充 bigQuery 表的主要内容,如果未能解决你的问题,请参考以下文章
如何将数据框从 Cloud Datalab 导出到 BigQuery 表?
Datalab 到 BigQuery - 将变量值插入 SQL
使用 Google Datalab,如何在 Google BigQuery 中使用 UDF 从复杂查询创建表?