【发布时间】:2017-03-18 00:33:53
【问题描述】:
我已经使用以下代码构建了一个应用引擎项目,将数据从谷歌云存储桶移动到 bigquery 表中
import argparse
import time
import uuid
from google.cloud import bigquery
def load_data_from_gcs(dataset_name, table_name, source):
bigquery_client = bigquery.Client()
dataset = bigquery_client.dataset(dataset_name)
table = dataset.table(table_name)
job_name = str(uuid.uuid4())
job = bigquery_client.load_table_from_storage(
job_name, table, source)
job.begin()
wait_for_job(job)
print('Loaded {} rows into {}:{}.'.format(
job.output_rows, dataset_name, table_name))
def wait_for_job(job):
while True:
job.reload()
if job.state == 'DONE':
if job.error_result:
raise RuntimeError(job.error_result)
return
time.sleep(1)
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('dataset_name')
parser.add_argument('table_name')
parser.add_argument(
'source', help='The Google Cloud Storage object to load. Must be in '
'the format gs://bucket_name/object_name')
args = parser.parse_args()
load_data_from_gcs(
args.dataset_name,
args.table_name,
args.source)
我还把默认的app.yaml文件改成了上面的文件,删除了webapp2库条目,我的app.yaml文件看起来像这样
application: gcstobq
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: .*
script: main.app
由于我是 python 和应用程序引擎的新手,我不知道是否需要将 main.py 文件中定义的库包含到 app.yaml 中,以及是否需要使用命令行工具运行此应用程序。
如果我在这里遗漏了什么,请告诉我?
【问题讨论】:
-
我还没有将应用程序上传到云端,但是当我在本地主机上运行它时,我在日志文件中得到以下信息,但没有任何数据发送到我的大查询表 ImportError : 没有名为 cloud 的模块
-
您安装了 Google python 库吗?即 pip install --upgrade google-cloud-bigquery
-
除了google cloud sdk和app engine,我没有安装任何东西,你认为这个错误与这些缺少的库有关吗?
-
我想是的。请尝试一下。
-
我现在已经安装了 google python 库,但是当我运行文件时它给了我以下错误 - from google.cloud import bigquery ImportError: No module named cloud
标签: python-2.7 google-app-engine google-bigquery python-import