如何使用 BigQueryHook 从另一个项目中读取数据
Posted
技术标签:
【中文标题】如何使用 BigQueryHook 从另一个项目中读取数据【英文标题】:how to use BigQueryHook to read data from another project 【发布时间】:2021-12-02 09:00:24 【问题描述】:我们在 GCP 项目 A 中有气流作曲家实例,我们的 BQ 数据集存在于项目 B 中。当我们尝试从 BQ 读取数据时,出现错误。我们将 hook 写成 hook = BigQueryHook(bigquery_conn_id='bigquery_default', delegate_to=None, use_legacy_sql=False)
我们如何在这个 BigQueryHook 函数中传递项目名称 B
【问题讨论】:
【参考方案1】:第一个 bigquery_conn_id
已弃用。你应该使用gcp_conn_id
。
项目 ID 是 GCP 连接的一个属性,您可以在 docs 中看到。如果您在连接级别上设置它,Airflow 会使用它。但是,如果需要,您可以在挂钩中覆盖它。
BigQueryHook(gcp_conn_id='bigquery_default', project_id='other_project')
您可以检查正在执行覆盖 here 的源代码。
【讨论】:
感谢@Elad,我尝试了这种方法,但出现错误“错误 - __init__() 得到了意外的关键字参数 'gcp_conn_id'” 听起来你正在运行旧版本的课程。您是从谷歌提供商或contrib
导入的吗?您正在运行哪个气流版本?
从airflow.contrib.hooks.bigquery_hook 导入BigQueryHook..我使用的是1.10.15+composer
这是过时的版本。您应该安装 google backport 提供程序并从中导入类。见***.com/a/68236614/14624409以上是关于如何使用 BigQueryHook 从另一个项目中读取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何从另一个新的 Spring Boot 项目调用一个 Spring Boot 项目中存在的 Spring Boot api
如何从另一个类 PyQT 向 QComboBox 添加项目?