python - Airflow : Native operators vs containers

标签 python google-bigquery airflow google-cloud-composer

我正在使用 Airflow 来协调各种批处理和转换过程。在编写新流程时,我遇到了一个场景,需要将 BigQuery 表转换为另一个表。我有两种方法来实现这个:

  • 通过使用 bigQuery_to_bigquery运算符
  • 通过编写自己的容器来执行任务,然后使用 Docker 或 Kubernetes 运算符来调用它

使用第一种方法,我的任务将得到缓解,并且我不需要维护/修复任何错误。然而,我将把编排和转换结合在一起。使用第二种方法,编排将与转换分开,但我必须维护 BigQuery API 和连接。

看起来这两种方法都有各自的优点和缺点。有什么推荐的方法吗?

最佳答案

我建议使用 native 运算符,尤其是对于简单的 API 调用(例如在 BigQuery 中运行查询)。我在生产中使用它们并且工作得很好。您也可以从文件传递查询。

如果您需要使用自定义代码运行一些繁重的转换,我建议使用 Docker 或 Kubernetes 运算符,您可以直接使用 Python 运算符在 Airflow 上执行此操作。

关于python - Airflow : Native operators vs containers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57109291/

相关文章:

python - 使用 BeautifulSoup 解析 html 表格

java - 在不返回 JSON 字符串的 Android 中使用 HttpPost 进行 POST,返回错误

Firebase 收集流到 BigQuery 转换函数

Airflow - 跳过 future 的任务实例而不更改 dag 文件

Airflow :如何在非PythonOperator中使用xcom_push和xcom_pull

python - 让函数在数据帧的每一行上工作(pandas)

python - 由于 gevent,heroku 应用程序错误

google-bigquery - BQ命令行工具-如何在创建BigQuery数据集之前检查其是否存在?

r - 查询文本指定 use_legacy_sql :false,,而 API 选项指定:true

python - 将参数从 BranchPythonOperator 传递到 PythonOperator