破碎的狗试图将气流连接到雪花

broken dag trying to connect airflow to snowflake

我在 python 中构建了一个 POC DAG,以便气流在 snowflake 中执行一个函数,但我在气流的 UI:

中遇到了这个错误

损坏的 DAG:[/opt/bitnami/airflow/dags/snowflake_poc.py] 没有名为 'snowflake'

的模块

我已经阅读了大量的文档,看起来我已经正确配置了所有内容,但显然有些地方不对劲。

这是我的 python 代码:

from datetime import timedelta
import airflow
from airflow import DAG
from airflow.contrib.operators.snowflake_operator import SnowflakeOperator

# These args will get passed on to each operator
# You can override them on a per-task basis during operator initialization
default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': airflow.utils.dates.days_ago(2),
    'email': ['me@me.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
}

dag = DAG(
    'snowflake_poc',
    default_args=default_args,
    description='just executing a proc in snowflake',
    schedule_interval=timedelta(days=1),
)

sql = "call jme_test_1();"

t1 = SnowflakeOperator(sql = sql,
    warehouse = "DATA_WH",
    database = "DEV_ADS" )

我确实确认气流有 snowflake_operatory.py 文件应该在的地方,为了安全起见我什至 运行 pip install --upgrade snowflake-connector-python。在有人问之前,是的,我确实在气流的连接管理部分设置了与雪花的连接UI,但我陷入了这个神秘的错误。

我错过了什么?

我们使用 Azure Market Place 应用程序来设置气流服务器,结果发现该服务器本身不能与 snowflake 一起使用。

我们通过运行在 Putty 中执行此命令

对此进行了测试
$: python3
>>> import snowflake.connector

这抛出了 "No module named 'botocore.docs'" 这只是告诉我们我们缺少 boto3 依赖项(必须 google botocore 并发现它是 boto3 包的一部分,因为我们正在使用 python3)

那么我们只需要安装它:

$: sudo pip install --upgrade boto3

之后 python 代码会 运行 但我们必须重新启动网络服务器才能让气流接收它。