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
|
Quickest fix: git fetch upstream main && git rebase upstream/main
rm uv.lock && uv lock
git add uv.lock && git rebase --continue
git push --force-with-leaseAutomated nudge — ignore if you're not ready to rebase. This comment is updated in place on future |
potiuk
left a comment
There was a problem hiding this comment.
Did a full pass over the new provider — structurally it's a clean standard-template provider, licenses/deps are permissive (adbc-driver-*/pyarrow are Apache-2.0), headers are present, provider.yaml wiring is correct, and no raise AirflowException / no assert in the hook. Two of my earlier points: the extras-passthrough ask is now handled via named db_kwargs/conn_kwargs keys (the safe allowlist form — good); and ignore my earlier --keywords suggestion, the dot form (apache.arrow) is the template convention every provider uses, so pyproject.toml is correct as-is.
Not approving yet — the main gap is test coverage on the extras feature itself (details inline), plus a few small fixes. A couple of smaller observations beyond the inline notes:
hooks/adbc.py—from more_itertools import chunkedis a direct import, butmore-itertoolsisn't a declared dependency of this provider (only transitive viacommon-sql). Either add it as a direct dependency or usecommon_sql/an alternative.tests/.../test_adbc.py— a fewmock.MagicMock()are created withoutspec=, inconsistent with thespec=Cursorusages elsewhere in the same file; AGENTS asks forspec/autospecwhen mocking.
Also: please rebase onto latest main — new providers churn uv.lock/root pyproject.toml, and a fresh rebase keeps CI meaningful before merge.
This review was drafted by an AI-assisted tool and confirmed by an Airflow maintainer. The findings below are observations, not blockers; an Airflow maintainer — a real person — will take the next look at the PR. If you think a finding is mis-applied, please reply on the PR and a maintainer will weigh in.
More on how Airflow handles maintainer review: contributing-docs/05_pull_requests.rst.
5438584 to
34e3fc9
Compare
34e3fc9 to
a05f1d5
Compare
dc892a7 to
fcaa384
Compare
fcaa384 to
0a14b5a
Compare
Added Apache Arrow provider in Airflow and implemented basic AdbcHook.
The AdbcHook implements the DBApiHook, so it can be reused across all SQL related operators.
I could also be used to test integration with Apache DataFusion.
@zeroshade
^ 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.