【发布时间】: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