amazon-web-services - 如何将 DBT 与 AWS Managed Airflow 结合使用?
问题描述
希望你一切顺利。我想检查是否有人在 aws mwaa 气流中启动并运行 dbt。
我已经尝试过这个和这个python 包但没有成功,但由于某种原因失败(找不到 dbt 路径等)。
有没有人设法使用 MWAA (Airflow 2) 和 DBT 而无需构建 docker 映像并将其放置在某个地方?
谢谢!
解决方案
我通过执行以下步骤设法解决了这个问题:
- 添加
dbt-core==0.19.1
到您的requirements.txt
- 将 DBT cli 可执行文件添加到 plugins.zip
#!/usr/bin/env python3
# EASY-INSTALL-ENTRY-SCRIPT: 'dbt-core==0.19.1','console_scripts','dbt'
__requires__ = 'dbt-core==0.19.1'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('dbt-core==0.19.1', 'console_scripts', 'dbt')()
)
从这里你有两个选择:
环境变量设置器示例:
from airflow.plugins_manager import AirflowPlugin
import os
os.environ["PATH"] = os.getenv(
"PATH") + ":/usr/local/airflow/.local/lib/python3.7/site-packages:/usr/local/airflow/plugins/"
class EnvVarPlugin(AirflowPlugin):
name = 'env_var_plugin'
插件压缩内容:
plugins.zip
├── dbt (DBT cli executable)
└── env_var_plugin.py (environment variable setter)
推荐阅读
- javascript - 按相等的两个键对对象数组进行排序
- laravel - 雄辩,从嵌套关系查询中检索结果
- react-native - 使用原生模块通过 JS 进行 HTTP 调用的性能优势?
- pycharm - Pycharm(linux)中无法识别LD_LIBRARY_PATH
- java - AZURE AD:如何在不重定向的情况下获取授权码?
- python - cv2 SIFT +蛮力匹配没有给出好的结果
- c# - 使用 XmlTextWriter 设置多个命名空间
- sql - 为什么我的 LEFT JOIN 不起作用?
- java - .zip 方法中的 Observable 数量是否有限制?
- python - 在 python 数据框中提取许多 URL