如何在app引擎上使用Bigquery流媒体插件蟒蛇

时间:2014-02-26 17:48:55

标签: python google-app-engine google-bigquery

我想开发一个直接将数据流传输到BigQuery表的应用引擎应用程序。

根据谷歌的文档,有一种简单的方法可以将数据流式传输到bigquery:

以下是有关如何编码流式插入的示例代码段:

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对象(来自代码段)的位置?

任何人都可以展示更完整的方式来使用此代码段(使用正确的导入)吗?

我一直在寻找那么多,发现文档令人困惑和偏袒。

2 个答案:

答案 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中。

请注意,如果您还想使用机器人来运行查询,而不仅仅是流,那么您需要让机器人成为项目“团队”的成员,以便它有权运行作业。