apache pinot 是一个很不错高性能的实时分析工具,同时提供了sql 查询能力,官方的jdbc 就是基于rest 包装的sql 查询
目前的问题
官方是基于sql +rest api (java client) 进行的jdbc 驱动开发,对于一些不支持的特性直接会跑出异常,这些很容易造成
好多数据库连接池工具不能工作
- 几个包含的配置
事务隔离级别,自动提交,清理警告,事务提交 - 解决方法
从目前来说,要么不使用连接池,如果希望使用连接池工具方法就是自己修改下jdbc 驱动(当前自己调整一个连接池处理也行,但是不推荐)
修改说明
代码: pinot-clients/pinot-jdbc-client/src/main/java/org/apache/pinot/client/base/AbstractBaseConnection.java
参考修改
@Override
public void clearWarnings()
throws SQLException {
}
@Override
public void commit()
throws SQLException {
}
@Override
public boolean getAutoCommit()
throws SQLException {
return true;
}
@Override
public int getTransactionIsolation()
throws SQLException {
return -1;
}
@Override
public void setTransactionIsolation(int level)
throws SQLException {
}
数据库连接池参考链接
经过修改之后使用就比较简单了,只是使用标准的玩法就行了
Hikari 的
public static DataSource newDataSource2(){
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.apache.pinot.client.PinotDriver");
config.setJdbcUrl("jdbc:pinot://localhost:9000");
config.setTransactionIsolation("TRANSACTION_READ_UNCOMMITTED");
HikariDataSource hikariDataSource = new HikariDataSource(config);
return hikariDataSource;
}
说明
pinot jdbc 实现的不是很好,没有很好的考虑社区周边的工具,dremio 以及其他的工具就比较好,很方便集成