【问题标题】:Google Cloud BigQuery Import not working in app engine projectGoogle Cloud BigQuery Import 在应用引擎项目中不起作用
【发布时间】: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


【解决方案1】:

Google Cloud 使用新的 Python 命名空间格式(如果您查看源代码,您会注意到目录结构中没有 __init__.py)。这在 Python 3.3 中已更改为 PEP-420

幸运的是,在 Python 2.7 中,您可以通过避免隐式导入轻松解决此问题。只需将其添加到文件的最顶部(在任何其他导入之前)即可获得 Python 3 行为:

from __future__ import absolute_import

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2011-05-30
    相关资源
    最近更新 更多