专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

apache druid 查询方式有哪几种?(druid查看慢sql)

ins518 2024-11-16 21:18:22 技术文章 5 ℃ 0 评论

简介

apache druid 中最原生的查询方式,是通过Http 查询。后来为了方便,加入了sql查询。sql查询支持大部分语法,但某些语法DataSketches 通过http可以直接查询,但sql无法查询。

本人的druid 版本 0.13.

Superset

由于原生查询语法比较复杂,通过Superset可以简化查询。

Superset 是一款由 Airbnb 开源的“现代化的企业级 BI(商业智能) Web 应用程序”,其通过创建和分享 dashboard,为数据分析提供了轻量级的数据查询和可视化方案。

Superset 的前端主要用到了 React 和 NVD3/D3,而后端则基于 Python 的 Flask 框架和 Pandas、SQLAlchemy 等依赖库,主要提供了这几方面的功能:

  • 集成数据查询功能,支持多种数据库,包括 MySQL、PostgresSQL、Oracle、SQL Server、SQLite、SparkSQL 等,并深度支持 Druid
  • 通过 NVD3/D3 预定义了多种可视化图表,满足大部分的数据展示功能。如果还有其他需求,也可以自开发更多的图表类型,或者嵌入其他的 JavaScript 图表库(如 HighCharts、ECharts)。
  • 提供细粒度安全模型,可以在功能层面和数据层面进行访问控制。支持多种鉴权方式(如数据库、OpenID、LDAP、OAuth、REMOTE_USER 等)

Superset 安装很简单,可以通过docker直接安装。官网有详细资料。

使用Superset 查询 (原生查询语法)

实现分组求和的查询语法。

{

"queryType": "topN",

"dataSource": "wikipedia1",

"aggregations": [{

"fieldName": "added",

"fieldNames": ["added"],

"type": "floatSum",

"name": "SUM(added)"

}],

"granularity": "all",

"postAggregations": [],

"intervals": "1901-01-01T00:00:00+00:00/2101-01-01T00:00:00+00:00",

"threshold": 10000,

"metric": "SUM(added)",

"dimension": "page"

}

也可以直接请求查询接口 访问broker 节点

新版中可以直接通过控制台查询。

sql 查询

dsql

命令位于 bin/dsql

实现分组求和语法

SELECT sum(added) As number FROM wikipedia1 group by page

http sql

{

"query":"SELECT sum(added) As number FROM wikipedia1 group by page"

}

java 端sql查询

依赖

<dependency>

<groupId>org.apache.calcite.avatica</groupId>

<artifactId>avatica</artifactId>

<version>1.10.0</version>

</dependency>

<dependency>

<groupId>org.apache.calcite.avatica</groupId>

<artifactId>avatica-core</artifactId>

<version>1.10.0</version>

</dependency>

建立jdbc 连接

public Connection getConnection() {

try {

String url = "jdbc:avatica:remote:url=http://" + "broker:8082"+

"/druid/v2/sql/avatica/";LOGGER.info("url:{}", url);

Properties connectionProperties = new Properties();

// connectionProperties.setProperty("sqlTimeZone", ZoneId// .systemDefault().getId());

Connection connection = DriverManager.getConnection(url, connectionProperties);

return connection;

} catch (SQLException e) {

LOGGER.error("创建druid jdbc连接过程中出现异常:", e);

}

return null;

}

sql查询

sql语法与上面一致,直接通过jdbc连接查询即可。

总结

druid 原生支持json查询,后来为了更加方便扩展了sql查询,由于某些原因sql解析器,不支持DataSketches 等查询。个人在java sql查询基础上封装了一个工具类,放在gitee上,可以留言。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表