如何将 DataFrame 存储到 Google DataLab 中的 BigTable 中?

How do I store a DataFrame into a BigTable in Google DataLab?

我有一个 DataFrame df。我创建了一个 BigQuery table.

# Create the schema, using the convenience of basing it on example DataFrame
schema = bq.Schema.from_dataframe(df)

# Create the dataset
bq.DataSet('ids').create()

# Create the table
suri_table = bq.Table('ids.suri').create(schema = schema, overwrite = True)


project = gcp.Context.default().project_id

有一个 Pandas 函数 [to_gbq()][1] 我想用它来存储 DataFrame。

df.to_gbq(df, 'ids.suri', project)

这个returns一个"Not found exception"虽然table存在。我刚刚在上面的代码中创建了它。有人可以帮我解决问题到底是什么吗?

NotFoundException: Invalid Table Name. Should be of the form 'datasetId.tableId'

如果我这样做:

from pandas.io import gbq

df.to_gbq('ids.suri', project_id=projectid)

我得到:

/usr/lib/python2.7/dist-packages/pkg_resources.pyc in resolve(self, requirements, env, installer, replace_conflicting)
    637                         # unfortunately, zc.buildout uses a str(err)
    638                         # to get the name of the distribution here..
--> 639                         raise DistributionNotFound(req)
    640                 to_activate.append(dist)
    641             if dist not in req:

DistributionNotFound: google-api-python-client

  [1]: http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.io.gbq.to_gbq.html

您将 Cloud Datalab 方式与 gbq 方式混为一谈。你应该使用一个或另一个。要从 Cloud Datalab 执行此操作,创建数据后,您只需使用:

suri_table.insert_data(df)

如果你想包含索引等,有几个选项;见 http://googlecloudplatform.github.io/datalab/gcp.bigquery.html#gcp.bigquery.Table.insert_data