【问题标题】:Creating new BigQuery datasets in Dataflow在 Dataflow 中创建新的 BigQuery 数据集
【发布时间】:2017-03-13 14:56:25
【问题描述】:
如何在 Dataflow 中创建新的 BigQuery 数据集来保存我的数据?
我希望使用数据流程序中的版本标记对数据集名称进行版本控制。
我正在使用 python API 并尝试使用 BigQuery 客户端在 beam.io.BigQuerySink 之外执行此操作,但是在 gcp 上运行流程时出现以下错误:ImportError: No module named cloud 指的是 bigquery 导入 @987654323 @。
最好的方法是什么?
【问题讨论】:
标签:
python
google-bigquery
google-cloud-dataflow
【解决方案1】:
您在在接收器之外使用 BigQuery 客户端是正确的。它应该看起来像这样:
[..]
from google.cloud import bigquery
client = bigquery.Client(project='PROJECT_ID')
dataset = client.dataset(DATASET_NAME)
dataset.create()
[..]
您必须记住,虽然这在您在本地运行管道时可能会起作用,但是当您在 GCP 上远程运行时,在工作器池中启动的虚拟机将不会与您的本地计算机具有相同的依赖关系。
因此,您需要按照here 概述的步骤远程安装依赖项:
- 找出您的计算机上安装了哪些软件包。运行以下命令:
pip freeze > requirements.txt。这将创建一个 requirements.txt 文件,其中列出了已安装在您计算机上的所有软件包,无论它们来自何处(即从哪里安装)。
- 在 requirements.txt 文件中,只保留从 PyPI 安装并在工作流源中使用的包。删除其余与您的代码无关的包。
- 使用以下命令行选项运行您的管道:
--requirements_file requirements.txt。这会将 requirements.txt 文件暂存到您定义的暂存位置。