You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Druid基于HDFS文件构建Cube并执行查询操作

Druid 从HDFS文件构建预聚合Cube及查询操作指南

Druid中常说的Cube本质是按业务需求预定义维度、指标做聚合后生成的时序化Segment数据集,从HDFS文件构建Cube走批量摄入流程即可,具体操作如下:

前置校验

先确认基础环境符合要求:

  • HDFS上的源文件为Druid支持的格式(CSV、JSON、Parquet、ORC等均可)
  • Druid集群已配置HDFS访问权限,可正常读取目标路径下的文件
  • Druid的Overlord、MiddleManager、Coordinator、Broker节点均处于正常运行状态

基于HDFS文件构建Cube的操作步骤

1. 编写摄入规范(Ingestion Spec)JSON文件

这是构建Cube的核心配置,需要包含三个核心模块:

  • dataSchema:定义目标数据源名称、时间戳字段映射规则、维度列表、指标聚合规则,可按需配置rollup预聚合开关来降低存储占用、提升查询速度
  • ioConfig:配置输入源为HDFS,指定目标文件路径、文件解析规则,核心配置示例如下:
    "inputSource": {
      "type": "hdfs",
      "paths": "hdfs://<namenode-host>:<port>/<your-file-path>/*"
    }
    
    批量摄入建议选择index_parallel任务类型,可通过多并行度提升构建效率
  • tuningConfig:配置任务并行度、Segment切分大小、内存占用阈值等调优参数,可根据集群资源情况自定义

2. 提交摄入任务

有两种常用提交方式:

  • 可视化提交:打开Druid控制台的Tasks页面,点击Submit task上传编写好的Spec文件即可
  • 命令行提交:通过curl命令调用Overlord接口提交,示例命令:
    curl -X POST -H 'Content-Type: application/json' http://<overlord-host>:8081/druid/indexer/v1/task -d @<your-spec-file-path>.json
    

3. 验证构建结果

任务运行完成后,在Druid控制台的Datasources页面可以看到对应数据源,当Segments状态变为Online即代表Cube构建完成,可正常执行查询。

构建完成后的Cube查询方式

Druid支持三类常用查询方式,可按需选择:

1. 原生JSON查询

直接向Broker节点发送JSON格式的查询请求,灵活性最高,示例group by查询如下:

{
  "queryType": "groupBy",
  "dataSource": "<your-datasource-name>",
  "granularity": "day",
  "dimensions": ["region", "device_type"],
  "aggregations": [
    {"type": "longSum", "name": "total_visit", "fieldName": "visit_cnt"},
    {"type": "doubleSum", "name": "total_pay", "fieldName": "pay_amount"}
  ],
  "intervals": ["2024-01-01T00:00:00.000Z/2024-01-08T00:00:00.000Z"]
}

提交命令示例:

curl -X POST -H 'Content-Type: application/json' http://<broker-host>:8082/druid/v2/ -d @<your-query-file>.json

2. SQL查询

Druid原生支持ANSI SQL语法,学习成本更低,示例查询如下:

SELECT 
  DATE_TRUNC('day', __time) AS statistics_date,
  region,
  device_type,
  SUM(visit_cnt) AS total_visit,
  SUM(pay_amount) AS total_pay
FROM <your-datasource-name>
WHERE __time BETWEEN '2024-01-01' AND '2024-01-08'
GROUP BY statistics_date, region, device_type

可以直接在Druid控制台的Query页面执行,也可以通过JDBC驱动、HTTP SQL接口对接业务系统查询。

3. 可视化工具查询

直接在Druid自带控制台的Query页面执行查询即可得到表格、折线图、柱状图等可视化结果,也可以对接Superset、Grafana等BI工具做进一步的数据分析展示。

常用优化建议

  • 构建Cube时优先过滤不需要的字段,合理设置rollup预聚合规则,可大幅降低Segment存储占用,提升查询速度
  • 高频查询的低基数维度建议放在维度列表的前列,可优化查询性能
  • HDFS上的源文件建议按时间做分区,摄入时可指定时间范围跳过不需要的数据,加快Cube构建速度

内容的提问来源于stack exchange,提问作者ikhlas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:15:04