Add Apache Arrow provider#52330
Conversation
|
Just for anyone looking here - this is a draft for discussion between me, @dabla and @zeroshade - we will still need to start a DISCUSSION thread for the new provider - and we think Arrow and ADBC is a good addition. But we have to first discuss the approach :) |
|
As @potiuk mentioned, I believe this needs a devlist conversation first. |
…ion regarding the configuration parameters
…ge python files changed
Yep. This one is mostly to gather learnigs, get feedback from @zeroshade and see how we can turn it into a "convincing" devlist proposal - by showing some use cases and small POC of implementation and what it allows :). We'll experiment a bit with it and gather our thoughts and see what can come out of it. |
… depend on sqlalchemy anymore
…isting dialects as ADBC dialect doesn't make sense
…mary_keys as it won't work with ADBC
fcaa384 to
0a14b5a
Compare
# Conflicts: # dev/breeze/doc/images/output_build-docs.svg # dev/breeze/doc/images/output_build-docs.txt # dev/breeze/doc/images/output_release-management_add-back-references.svg # dev/breeze/doc/images/output_release-management_add-back-references.txt # dev/breeze/doc/images/output_release-management_classify-provider-changes.svg # dev/breeze/doc/images/output_release-management_classify-provider-changes.txt # dev/breeze/doc/images/output_release-management_generate-issue-content-providers.svg # dev/breeze/doc/images/output_release-management_generate-issue-content-providers.txt # dev/breeze/doc/images/output_release-management_generate-providers-metadata.svg # dev/breeze/doc/images/output_release-management_generate-providers-metadata.txt # dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg # dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt # dev/breeze/doc/images/output_release-management_prepare-provider-documentation.svg # dev/breeze/doc/images/output_release-management_prepare-provider-documentation.txt # dev/breeze/doc/images/output_release-management_publish-docs.svg # dev/breeze/doc/images/output_release-management_publish-docs.txt # dev/breeze/doc/images/output_sbom_generate-providers-requirements.svg # dev/breeze/doc/images/output_sbom_generate-providers-requirements.txt # dev/breeze/doc/images/output_workflow-run_publish-docs.svg # dev/breeze/doc/images/output_workflow-run_publish-docs.txt # uv.lock
A discussion was already started on the devlist in beginning of march this year. |
4675498 to
2c63de3
Compare
c80496f to
4508f06
Compare
Apache Arrow provider (
apache-airflow-providers-apache-arrow)Adds a new Airflow provider backed by Apache Arrow and the
Arrow Database Connectivity (ADBC) standard.
What's included
AdbcHookA general-purpose
DbApiHooksubclass that connects to any ADBC-compatible database via theadbc-driver-manager. It exposes the full Airflow SQL hook surface (get_records,run,insert_rows, …) while internally operating on ArrowRecordBatchobjects for zero-copy,columnar data transfer.
Key capabilities:
insert_rowsconverts rows to ArrowRecordBatchobjects anduses the cursor's native
bindAPI when available, falling back toexecutemanyotherwise.commit_every) tobound transaction size and lock duration.
installed wheel; the entrypoint can also be overridden via connection extras.
driver,entrypoint,db_kwargs,conn_kwargs, anddialectare all configurable from the Airflow connection UI without code changes.
Supported databases (via optional extras)
sqliteadbc-driver-sqlitepostgresqladbc-driver-postgresqlsnowflakeadbc-driver-snowflakebigqueryadbc-driver-bigqueryflightsqladbc-driver-flightsqlInstallation
Requirements
apache-airflow >= 2.11.0apache-airflow-providers-common-sql >= 1.28.2adbc-driver-manager >= 1.7.0pyarrow >= 16.1.0(Python < 3.13) />= 18.0.0(Python ≥ 3.13)more-itertools >= 9.0.0Link to the discussion thread on the devlist: https://lists.apache.org/thread/v1nxnr5gocvzs12pknjxkw64mrtpg2o0
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rstor{issue_number}.significant.rst, in airflow-core/newsfragments.