我想开发一个直接将数据流式传输到BigQuery表中的App Engine应用程序。
根据Google的文档,有一种简单的方法可以将数据流式传输到bigquery:
http://googlecloudplatform.blogspot.co.il/2013/09/google-bigquery-goes-real-time-with-streaming-inserts-time-based-queries-and-more.html
https://developers.google.com/bigquery/streaming-data-into-bigquery#streaminginsert示例 (请注意:在上面的链接中,您应该选择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对象(来自摘录)应位于哪里?
谁能展示出使用此代码段的更完整方法(正确的导入方式)?
我一直在搜索很多东西,发现文档令人困惑和不完整。
最少的工作(只要您为项目填写正确的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
正如Jordan所说:“请注意,它使用Appengine机器人对BigQuery进行身份验证,因此您需要将机器人帐户添加到数据集的ACL中。请注意,如果您还想使用机器人来运行查询,而不仅仅是流,则您需要使该机器人成为项目“团队”的成员,以便其有权运行作业。”