气流 <--> Greenplum

Airflow <--> Greenplum

是否可以建立从 Airflow 到 Greenplum 的连接?请记住,Greenplum 是基于 PostgreSQL 的,是否可以建立与 Greenplum 主服务器的连接?

没有。快速查看 Airflow github 回购表明他们正在使用主键约束加上一个带有唯一约束的附加列,这在 Greenplum 中不受支持。

例如:

    op.create_table(
        'user',
        sa.Column('id', sa.Integer(), nullable=False),
        sa.Column('username', sa.String(length=250), nullable=True),
        sa.Column('email', sa.String(length=500), nullable=True),
        sa.PrimaryKeyConstraint('id'),
        sa.UniqueConstraint('username')
    )

在 Greenplum 中,您不能在 (id) 上有主键而在 (username) 上有另一个唯一约束。

他们的 github 存储库也没有提及其他 MPP 数据库平台,如 Netezza 和 Teradata。也许 Airflow 适用于小数据、数据科学,但这听起来有点矛盾。

安德里亚,

我认为您可以使用 Airflow 对 Greenplum 中的分析数据进行 运行 ETL。

Jon 提供的 "no" 答案显然是关于使用 Greenplum 作为后端元数据存储,Airflow 在内部使用它来跟踪其 DAG 和任务。 Jon 用作示例的代码是 Airflow 如何创建用于其后端元数据存储的表,这与您要管理的 Greenplum 数据仓库的内容无关。

我怀疑您反而对 Greenplum 感兴趣,因为您的大量分析数据,而不是 Airflow 后端。所以答案几乎可以肯定!

您甚至可以通过使用标准的 PostgreSQL 挂钩和运算符获得:

我这么说是因为 Greenplum 似乎可以使用标准的 PostgreSQL Python API: https://gpdb.docs.pivotal.io/4330/admin_guide/managing/access_db.html

如果 Airflow 的标准 PostgreSQL 挂钩和运算符不适合您,您可以轻松创建自己的。例如,参见我在 Snowflake 数据仓库中的工作;将 Snowflake Python 连接器集成到气流中是一件简单的事情。

https://github.com/aberdave/airflow-snowflake

如果所有这些都失败,您应该能够使用 ODBC 或 JDBC 通过 Airflow 在 Greenplum 中管理日期。我选择了 Python 来使用 Snowflake,因为定制他们的 Python 连接器非常容易。