Client libraries
Build applications with Pinot client libraries for Java, JDBC, Python, and Go.
Use client libraries when your application code needs to query Pinot directly instead of going through a BI tool or a federated SQL engine. The client path is best when you want broker-aware routing, async queries, prepared statements, or direct access to Pinot result sets.
What belongs here
Java
JVM services and libraries
Native client with blocking and async execution, prepared statements, request tracing, and tenant-aware broker selection. The linked docs use org.apache.pinot:pinot-java-client:1.4.0.
JDBC
SQL-first applications and BI plumbing
Standard JDBC interface that is easy to embed in SQL tooling. The linked docs use org.apache.pinot:pinot-jdbc-client:1.4.0.
Python
Data apps, notebooks, and SQLAlchemy workflows
DB-API and SQLAlchemy support through pinotdb. The linked docs call out SQL API support in pinotdb 0.3.2+ and older PQL compatibility in 0.2.x.
Go
Services and batch tools written in Go
Native Go client with direct SQL execution and response inspection.
How to choose
Choose Java when you want the most direct Pinot-native API surface in a JVM application. Choose JDBC when the consuming tool expects a database driver. Choose Python when you need a notebook-friendly or ORM-friendly connection. Choose Go when you want a thin client in a Go service or pipeline.
The Java and JDBC client docs both use 1.4.0 artifacts in their current installation examples. Keep those two examples aligned when you refresh the client docs so the dependency versions do not drift apart.
Detailed docs
What this page covered
This page covered the four direct client options for application code that queries Pinot without a BI tool or federated engine.
Next step
Open the detail page for the language you are using and follow the connection pattern, authentication, and timeout guidance there.
Related pages
Last updated
Was this helpful?

