1.MySQL Client
Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris。登录到doris服务器后,可使用 select语句查询数据。
mysql -uroot -P9030 -h127.0.0.1
为了防止用户的一个查询可能因为消耗内存过大。查询进行了内存控制,一个查询任务,在单个 BE 节点上默认使用不超过 2GB 内存。用户在使用时,如果发现报 Memory limit exceeded 错误,一般是超过内存限制了。遇到内存超限时,用户应该尽量通过优化自己的 sql 语句来解决。如果确切发现2GB内存不能满足,可以手动设置内存参数。
select 查询如果使用limit分页查询,则需要指定order by 字段,否则同一个sql返回的数据可能不一样。
2.JDBC
由于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</g