直接上代码
Doris 表结构
CREATE TABLE chat_stat
(
timestamp DATETIME,
op VARCHAR(255),
rid VARCHAR(255),
num Int SUM DEFAULT '0'
) aggregate KEY(timestamp,op,rid)
PARTITION BY RANGE(timestamp) ()
DISTRIBUTED BY HASH(rid) BUCKETS 10
PROPERTIES (
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "MONTH",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "10",
"dynamic_partition.start" = "-1", -- 开始分区为当前时间前一个月
"dynamic_partition.end" = "3" ,-- 结束分区为当前时间后三个月(不包含)
"replication_num" = "1"
);
表结构很简单,使用聚合模型统计timestamp,op,rid相同时的数量总和
创建 Routine Load 导入作业
CREATE ROUTINE LOAD live_audit_db.chat_stat_load ON chat_stat
COLUMNS(t,timestamp=from_unixtime(t),op,rid,num =1 ),
WHERE op = 'chat'
PROPERTIES(
"format"="json",
"jsonpaths"="[\"$.body.wstime\",\"$.op\",\"$.rid\"]"
)
FROM KAFKA(
"kafka_broker_list" = "192.168.88.60:9092",
"kafka_topic" = "video_livesocket_message_topic",
"property.group.id" = "doris-chat",
"property.kafka_default_offsets" = "OFFSET_END"
);
参数解释:
live_audit_db:创建导入任务的数据库。
chat_stat_load :指定创建的导入任务名称,同一个 database 不能有名字相同的任务。
chat_stat:指定需要导入的表的名称。
“format”=“json”:指明数据格式是json。
kafka_broker_list:指定 Kafka 的 broker 连接信息。格式为 <kafka_broker_ip>:。多个 broker 之间以逗号分隔。例如在 Kafka Broker 中默认端口号为 9092,可以使用以下命令指定 Broker List:“kafka_broker_list” = “<broker1_ip>:9092,<broker2_ip>:9092”。
kafka_topic:指定要订阅的 Kafka 的 topic。一个导入作业仅能消费一个 Kafka Topic。
property.group.id:kafka groupId
property.kafka_default_offsets:指定分区默认的起始offset,默认为 OFFSET_END,即从末尾开始订阅。还可以设置参数 为OFFSET_BEGINNING,即从起始开始订阅。
jsonpaths:用于配置列名映射,顺序要和COLUMNS中设置的字段顺序对应,其中如果有json子对象的属性需要映射,直接用“.”访问即可,如例子中的$.body.wstime。
COLUMNS:用于指定对应的列名,支持数据的映射转换,如例子中的“t,timestamp=from_unixtime(t)”,即timestamp字段是由t转化得到,而t是由jsonpaths中的第一个$.body.wstime映射而来(按顺序映射)。
状态查询与管理
// 展示 Routine Load 作业运行状态
SHOW ROUTINE LOAD for live_audit_db.chat_stat_load;
//用户停止一个 Routine Load 作业。被停止的作业无法再重新运行
STOP ROUTINE LOAD FOR live_audit_db.chat_stat_load;
//用于暂停一个 Routine Load 作业。被暂停的作业可以通过 RESUME 命令重新运行
PAUSE ROUTINE LOAD FOR live_audit_db.chat_stat_load;
//用于重启一个被暂停的 Routine Load 作业。重启的作业,将继续从之前已消费的 offset 继续消费
RESUME ROUTINE LOAD FOR live_audit_db.chat_stat_load;
//查看一个指定的 Routine Load 作业的当前正在运行的子任务情况。
SHOW ROUTINE LOAD TASK where jobname = 'chat_stat_load';
官方文档
其他详细参数和字段可查询官方文档
链接: 官方文档