跳转到主要内容

此项目包含通用的传输操作符,可以将源数据集中可以读取的所有数据传输到目标数据集中。从DAG作者的角度来看,所有传输都将通过仅调用通用传输操作符来完成。

项目描述

通用传输操作符

轻松进行传输

CI

通用传输操作符 简化了用户使用 Apache Airflow 在源和目标之间传输数据的方式。它提供了一个一致的通用接口,改善了用户体验,因此用户不需要显式使用特定的提供者或操作符。

目前,它支持在 文件位置数据库(双向)之间以及跨数据库的传输。

此项目由 Astronomer 维护。

安装

pip install apache-airflow-provider-transfers

示例DAG

查看example_dags文件夹,了解如何使用UniversalTransfeOperator的示例。

通用传输操作符的工作原理

Approach

使用通用传输操作符,用户可以使用以下传输模式进行数据传输

  1. 非原生
  2. 原生
  3. 第三方

非原生传输

非本地传输依赖于通过Airflow工作节点传输数据。在可能的情况下,会应用分块处理。这种方法可能适用于小于2GB的数据集,具体取决于源和目标。此方法的表现高度依赖于工作节点的内存、磁盘、处理器和网络配置。

内部步骤包括

  • 从数据集存储中分块检索数据集数据到工作节点。
  • 从工作节点向云数据集发送数据。

以下是一个在Google云存储和Sqlite之间进行非本地传输的示例

https://github.com/astronomer/apache-airflow-provider-transfers/blob/main/example_dags/example_universal_transfer_operator.py#L37-L41

通过使用本地传输改进瓶颈

使用非本地传输方法的替代方法是本地方法。本地传输依赖于数据源或数据目标提供商提供的机制和工具。例如,从对象存储迁移到Snowflake数据库时,本地传输包括使用内置的COPY INTO命令。当从S3加载数据到BigQuery时,通用传输操作员使用GCP存储传输服务。

本地传输的优点是,对于更大的数据集(2GB)来说,它们可能会表现得更好,并且不依赖于Airflow工作节点的硬件配置。使用这种方法,Airflow工作节点用作协调器,不执行传输。速度完全取决于所使用的服务和源与目标之间的带宽。

步骤

  • 请求目标数据集从源数据集摄取数据。
  • 目标数据集请求源数据集的数据。

注意:本地方法的实现正在进行中,将在未来的版本中提供。

使用第三方工具进行传输

通用传输操作员还可以提供一个类似于Fivetran的通用第三方数据传输服务的接口。

以下是如何使用Fivetran进行传输的示例

https://github.com/astronomer/apache-airflow-provider-transfers/blob/main/example_dags/example_dag_fivetran.py#L52-L58

支持的技术

文档

文档正在编写中--我们旨在遵循Diátaxis系统。

变更日志

通用传输操作员遵循语义版本控制进行发布。请查看变更日志以获取最新更改。

发布管理

有关我们的发布理念和步骤的更多信息,请参阅发布管理

贡献指南

欢迎所有贡献、错误报告、错误修复、文档改进、增强功能和想法。

阅读贡献指南以获取贡献的详细概述。

贡献者和维护者应遵守贡献者行为准则

许可证

Apache许可证2.0

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分发

apache-airflow-provider-transfers-0.1.0.tar.gz (40.7 kB 查看哈希值)

上传时间 源代码

构建版本

apache_airflow_provider_transfers-0.1.0-py3-none-any.whl (62.3 kB 查看哈希值)

上传时间 Python 3

由以下支持