[Feature Request]: Add read() support to Java ClickHouseIO (currently write-only)
Maintainers usually reply within 1 day
@nitinware is already working on this.
Since Sep 7, 2026.
Assessment
This issue has not been assessed yet.
Description
What would you like to happen?
Motivation
The Java ClickHouseIO connector at sdks/java/io/clickhouse/ currently supports only writes. Reading from ClickHouse in a Beam pipeline requires falling back to JdbcIO with the ClickHouse JDBC driver, which loses ClickHouse-specific schema fidelity (LowCardinality, Array(T), Nullable(T), Nested, tuples) and native columnar transport.
Proposal
Add ClickHouseIO.read() and ClickHouseIO.readAll() PTransforms symmetric to the existing write path:
- Native
Rowoutput using the ClickHouse client's native format - Query/projection via user-supplied
SELECTtemplate - Splittable reader for parallel reads across partitions / shards,
modeled onJdbcIO's splitting pattern - Reuse the existing connection configuration builder from the writer
Benefits
- Closes an obvious read/write asymmetry — every other major DB IO in
Beam (JDBC, Cassandra, Mongo, HBase, Spanner, BigQuery, Snowflake)
supports both directions - ClickHouse is increasingly common as an analytics source; users
currently work around this withJdbcIOat the cost of type fidelity
Testing plan
- Unit tests mirroring the existing writer test file
- Integration test using the module's existing testcontainers-based
ClickHouse setup (ClickHouseContaineris already wired inbuild.gradle) - No new dependencies required
Issue Priority
Priority: 2 (default / most feature requests should be filed as P2)
Issue Components
- Component: Python SDK
- Component: Java SDK
- Component: Go SDK
- Component: Typescript SDK
- Component: IO connector
- Component: Beam YAML
- Component: Beam examples
- Component: Beam playground
- Component: Beam katas
- Component: Website
- Component: Infrastructure
- Component: Spark Runner
- Component: Flink Runner
- Component: Prism Runner
- Component: Twister2 Runner
- Component: Hazelcast Jet Runner
- Component: Google Cloud Dataflow Runner
- Dominant language
- Java
- Stars
- 8.7k
- Forks
- 4.8k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 368
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/beam
-
awaiting triage bug P3
Difficulty 1/5 Under an hour Newbie friendliness 67/100
apache/beam#41197 · 2 comments ·
Maintainers usually reply within 1 day
-
[Bug]: [Python] WriteToJson silently rounds floats to 10 decimal placesPossibly taken @Abhi2939 claimed this 1 day ago. Openio P2 python yaml
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
apache/beam#41102 · 4 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/beam#39624 · 2 reactions ·
Maintainers usually reply within 1 day
-
[Bug]: PubsubIO used in batch incorrect batch cutoff sizePossibly taken @1fanwang claimed this 78 days ago. Openbug io P3 pinned pubsub
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/beam#28011 · 4 comments ·
Maintainers usually reply within 1 day
-
build P3 sub-task
Difficulty 1/5 Under an hour Newbie friendliness 68/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
SasanLabs/VulnerableApp#912 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
desktop edt not responding
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
datafusion-contrib/StreamFusion#653 ·
Maintainers usually reply within 1 day
-
[Bug] Absolute row/column index 0 is ignored for images, hyperlinks and commentsPossibly taken @fanOfSunny claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day