由于Doris 采用 MySQL 协议,同样也支持通过JDBC方式读取数据。
package com.yichenkeji.demo.test;
import lombok.extern.slf4j.Slf4j;
import java.sql.*;
import java.util.Properties;
@Slf4j
public class DorisJDBCDemo {
public static void main(String[] args) throws SQLException {
String jdbc_driver = "com.mysql.cj.jdbc.Driver";
String jdbc_url = "jdbc:mysql://192.168.179.131:9030/demo?rewriteBatchedStatements=true";
String username = "root";
String password = "";
Connection conn = getConnection(username,password,jdbc_url,jdbc_driver);
log.info("{}",conn);
String sql = "select * from dim_area limit 10";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()){
log.info("id={},name={}",rs.getFloat("id"),rs.getString("name"));
}
closeConnection(conn);
}
/**
* 获取连接
* @param username
* @param password
* @param jdbcUrl
* @param driver
* @return
*/
public static Connection getConnection(String username,String password,String jdbcUrl,String driver) {
Properties prop = new Properties();
prop.put("user", username);
prop.put("password", password);
try {
Class.forName(driver);
log.info("jdbcUrl:{}",jdbcUrl);
return DriverManager.getConnection(jdbcUrl, prop);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 关闭连接
* @param conn
*/
public static void closeConnection(Connection conn) {
if(conn != null){
try {
if(!conn.isClosed()){
conn.close();
}
} catch (SQLException e) {
log.error("SQLException:{}", e.getMessage());
}
}
}
}
3. 查询计划
由于jdbc查询暂时不支持流式读取,如果读取的数据量过大,一次性读取全部数据需要很大的资源,所有可以使用查询计划API接口,给定一个 SQL,获取该 SQL 对应的查询计划。通过返回的数据分区信息,分批读取数据。
引用jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yichenkeji</groupId>
<artifactId>doris-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<thrift-service.version>1.0.0</thrift-service.version>
<lombok.version>1.18.26</lombok.version>
<httpclient.version>4.5.14</httpclient.version>
<libthrift.version>0.16.0</libthrift.version>
<fastjson2.version>2.0.32</fastjson2.version>
<arrow.version>13.0.0</arrow.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok&l