TL;DR
- 场景: 实时数据流(Kafka)接入 Kylin,实现分钟级 OLAP 分析
- 结论: Streaming Cubing 支持 3-5 分钟延迟的实时聚合查询
- 产出: Kafka 配置、消息格式、构建命令、定时调度
Streaming Cubing 概述
什么是 Streaming Cubing
Apache Kylin V1.6 版本针对实时数据更新需求发布了 Streaming Cubing 功能扩展,通过整合 Hadoop 生态系统处理能力实时消费 Kafka 消息队列中的数据,实现分钟级(通常3-5分钟)更新的 Cube。
核心特性
- 消费 Kafka 消息队列
- 分钟级数据更新
- 与离线 Cube 查询语法一致
- 支持 Lambda 架构(实时 + 离线)
实现步骤
1. 创建项目
在 Kylin Web UI 创建项目。
2. 定义数据源(Kafka)
Data Source → Add Streaming Table
3. 定义 Model
Model → Streaming Model
4. 定义 Cube
Cube → Streaming Cube
5. Build Cube
Build → Streaming Build
6. 作业调度
使用 crontab 定时触发增量构建。
消息体 JSON 结构
要求
{
"dimensions": {
"region": "APAC",
"product_line": "smartphone"
},
"metrics": {
"order_count": 42,
"revenue": 12500.00
},
"timestamp": "2023-05-15T09:15:30Z"
}
三段式 JSON
- dimensions: 维度字段
- metrics: 度量字段
- timestamp: 时间戳
时间分区列
将时间分区列(如 minute_start)前置到 RowKeys。
构建命令
REST API 构建
curl -X PUT --user ADMIN:KYLIN \
-H "Content-Type:application/json;charset=utf-8" \
-d '{
"sourceOffsetStart": 0,
"sourceOffsetEnd": 9223372036854775807,
"buildType": "BUILD"
}' \
http://h122.wzk.icu:7070/kylin/api/cubes/streaming_cube1/build2
参数说明
- sourceOffsetStart: Kafka 起始偏移量
- sourceOffsetEnd: Kafka 结束偏移量
- buildType: BUILD(增量)
自动构建(crontab)
每 20 分钟增量构建
*/20 * * * * curl -X PUT --user ADMIN:KYLIN \
-H "Content-Type:application/json;charset=utf-8" \
-d '{
"sourceOffsetStart": 0,
"sourceOffsetEnd": 9223372036854775807,
"buildType": "BUILD"
}' \
http://h122.wzk.icu:7070/kylin/api/cubes/streaming_cube1/build2
微批构建与 Refresh 合并窗口
| 窗口类型 | 时间间隔 |
|---|---|
| 0.5h | 30 分钟 |
| 4h | 4 小时 |
| 1d | 1 天 |
| 7d | 7 天 |
典型应用场景
电商交易分析
- 实时销售额统计
- 订单量监控
- 区域销售排名
用户行为分析
- 实时 UV/PV
- 点击流分析
- 用户画像实时更新
IoT 设备监控
- 传感器数据聚合
- 异常告警
- 设备状态实时统计
解析器配置
TimedJsonStreamParser
使用 TimedJsonStreamParser 解析三段式 JSON:
- 自动提取 dimensions
- 自动提取 metrics
- 自动提取 timestamp
时间分区
- minute_start: 分钟级分区
- hour_start: 小时级分区
- day_start: 日级分区
错误速查
| 症状 | 根因定位 | 修复 |
|---|---|---|
| Kafka 消费延迟 | 网络/分区/消费者能力 | 检查消费者并发,增加分区数 |
| 数据丢失 | 偏移量提交策略 | 确保 offsets.commit.interval.ms 配置 |
| 构建失败 | JSON 格式错误 | 校验消息体格式 |
| 查询延迟高 | Segment 过多 | 配置自动合并策略 |