【问题标题】:'module' object has no attribute 'WriteToBigQuery' when running Apache Beam on Google App Engine Flex在 Google App Engine Flex 上运行 Apache Beam 时,“模块”对象没有属性“WriteToBigQuery”
【发布时间】:2018-02-09 15:52:45
【问题描述】:

我有一个触发 Cloud DataFlow 管道的 Google App Engine。该管道应该将最终的 PCollection 写入 Google BigQuery,但我找不到安装正确 apache_beam.io 依赖项的方法。

我在本地运行 Apache Beam 版本 2.2.0。

项目结构遵循this blog post的代码。

这是相关的代码:

"WriteToBigQuery" >> beam.io.WriteToBigQuery(
            ("%s:%s.%s" % (PROJECT, DATASET, TABLE)),
            schema=TABLE_SCHEMA,
            create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED,
            write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND
        )

当我在本地运行此代码时,beam.io.WriteToBigQuery() 被正确调用。它是从我的虚拟环境中的apache_beam/io/gcp/bigquery.py 获取的。

但我无法在部署应用程序随附的 lib 文件夹中安装此依赖项。

即使我有一个包含apache-beam[gcp]==2.2.0 作为要求的需求文件,当我运行pip install -r requirements.txt -t lib 时,下载到我的lib 文件夹的apache_beam/io/gcp/bigquery.py 不包含类WriteToBigQuery,然后我在 Google App Engine 上运行应用程序时收到错误 'module' object has no attribute 'WriteToBigQuery'

有没有人知道我如何获得正确的bigquery.py

【问题讨论】:

  • 您是在 App Engine 上而不是在 DataFlow 上运行它吗?
  • 你安装的是什么版本的Beam?
  • @Maximilian,管道在 DataFlow 上运行,但它是从 App Engine 实例 like on this project 触发的。我正在使用 Apache Beam 2.2.0。谢谢!
  • 这很奇怪。我在apache_beam/io/gcp/bigquery.py 中清楚地看到了该课程。你在那个文件中看到了什么?

标签: python google-app-engine google-bigquery apache-beam apache-beam-io


【解决方案1】:

这不是很明显,但要在 App Engine 中运行,如 blog post 中所述,需要创建一个 setup.py(即使您已经有一个 requirements.txt),并通过--setup_file ./setup.py 运行管道时的命令行选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2019-09-06
    • 2015-08-24
    • 1970-01-01
    相关资源
    最近更新 更多