// the find
housepower/ClickHouse-Native-JDBC
ClickHouse Native Protocol JDBC implementation
A JDBC driver for ClickHouse that talks the native TCP binary protocol instead of the HTTP interface used by the official yandex/clickhouse-jdbc driver, plus a separate module for Spark integration. It's for JVM teams running ClickHouse who are hitting throughput ceilings on the HTTP driver and want columnar wire-format performance.
Native TCP protocol with columnar compression gives a real, benchmarked performance edge over the HTTP-based alternative, and the benchmark report is actually linked rather than just claimed. Ships a shaded jar specifically to dodge dependency conflicts, which matters a lot in Spark environments where classpath collisions are common. The Spark module is a legitimately separate artifact rather than bolted-on glue code, with its own dialect implementation and its own test suite (SparkOnClickHouseITest, SparkDateITest). CI runs both current and legacy integration test workflows, which is more rigor than most drivers this size bother with.
Can't insert complex value expressions like toDate(123456) or anything in non-VALUES formats like TSV, which rules out a chunk of real-world ETL insert patterns — you're stuck doing query-then-transform in Java instead of pushing it to SQL. No ZSTD support, which is the compression codec most ClickHouse deployments actually standardize on now, so you lose wire-size savings the native protocol was supposed to buy you. The Spark integration is pinned to Scala 2.11/2.12 and Spark up to 3.1; for anything on Spark 3.2+ the README itself tells you to go use a different project, meaning this half of the repo is on a deprecation path. Only tested against Java 8/11 — no Java 17/21 in the test matrix despite those being the current LTS targets, so you're taking on some risk if your stack has moved past 11.