我想开发一个直接将数据流传输到BigQuery表的应用引擎应用程序。
根据谷歌的文档,有一种简单的方法可以将数据流式传输到bigquery:
https://developers.google.com/bigquery/streaming-data-into-bigquery#streaminginsertexamples (注意:在上面的链接中你应该选择python选项卡而不是Java)
以下是有关如何编码流式插入的示例代码段:
body = {"rows":[
{"json": {"column_name":7.7,}}
]}
response = bigquery.tabledata().insertAll(
projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute()
虽然我已经下载了客户端api,但我没有找到任何对上述Google示例中引用的“bigquery”模块/对象的引用。
应该找到bigquery对象(来自代码段)的位置?
任何人都可以展示更完整的方式来使用此代码段(使用正确的导入)吗?
我一直在寻找那么多,发现文档令人困惑和偏袒。
答案 0 :(得分:11)
最小化工作(只要您为项目填写正确的ID)示例:
import httplib2
from apiclient import discovery
from oauth2client import appengine
_SCOPE = 'https://www.googleapis.com/auth/bigquery'
# Change the following 3 values:
PROJECT_ID = 'your_project'
DATASET_ID = 'your_dataset'
TABLE_ID = 'TestTable'
body = {"rows":[
{"json": {"Col1":7,}}
]}
credentials = appengine.AppAssertionCredentials(scope=_SCOPE)
http = credentials.authorize(httplib2.Http())
bigquery = discovery.build('bigquery', 'v2', http=http)
response = bigquery.tabledata().insertAll(
projectId=PROJECT_ID,
datasetId=DATASET_ID,
tableId=TABLE_ID,
body=body).execute()
print response
正如乔丹所说:“请注意,这会使用appengine机器人对BigQuery进行身份验证,因此您需要将机器人帐户添加到数据集的ACL中。请注意,如果您还想使用机器人运行查询,不仅仅是流,您需要机器人成为项目“团队”的成员,以便它有权运行作业。“
答案 1 :(得分:3)
这是一个将记录流式传输到BigQuery表的appengine应用程序的工作代码示例。它是code.google.com上的开源代码:
http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/main.py#124
要找出bigquery对象的来源,请参阅 http://code.google.com/p/bigquery-e2e/source/browse/sensors/cloud/src/config.py
请注意,这使用appengine机器人对BigQuery进行身份验证,因此您将把机器人帐户添加到数据集的ACL中。
请注意,如果您还想使用机器人来运行查询,而不仅仅是流,那么您需要让机器人成为项目“团队”的成员,以便它有权运行作业。