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

  1. dimensions: 维度字段
  2. metrics: 度量字段
  3. 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.5h30 分钟
4h4 小时
1d1 天
7d7 天

典型应用场景

电商交易分析

  • 实时销售额统计
  • 订单量监控
  • 区域销售排名

用户行为分析

  • 实时 UV/PV
  • 点击流分析
  • 用户画像实时更新

IoT 设备监控

  • 传感器数据聚合
  • 异常告警
  • 设备状态实时统计

解析器配置

TimedJsonStreamParser

使用 TimedJsonStreamParser 解析三段式 JSON:

  • 自动提取 dimensions
  • 自动提取 metrics
  • 自动提取 timestamp

时间分区

  • minute_start: 分钟级分区
  • hour_start: 小时级分区
  • day_start: 日级分区

错误速查

症状根因定位修复
Kafka 消费延迟网络/分区/消费者能力检查消费者并发,增加分区数
数据丢失偏移量提交策略确保 offsets.commit.interval.ms 配置
构建失败JSON 格式错误校验消息体格式
查询延迟高Segment 过多配置自动合并策略