Doris 通过 Routine Load 功能来消费 Kafka 消息,这是一种自动化的、持续的数据导入方式。
核心概念:Routine Load
-
持续消费:Doris 会作为一个消费者,持续地从 Kafka Topic 的一个或多个 Partition 中拉取数据。
-
** exactly-once 语义**:Doris 能够保证数据不丢不重(在大多数正常场景下)。
-
自动管理:你只需要定义一个例行导入作业,Doris 会自动管理消费偏移量 (offset)、故障转移和负载均衡。
-
数据类型支持:支持导入 CSV、JSON 等格式的文本消息。
前提条件
-
Doris 集群:已安装并正常运行。
-
Kafka 集群:已安装并正常运行,并且有 Topic 和数据。
-
目标表:在 Doris 中创建好要导入数据的表。
步骤 1:在 Doris 中创建目标表
假设 Kafka 中的消息是用户行为日志,格式为 CSV:user_id, item_id, behavior, timestamp。
sql
-- 在Doris中创建一个示例表
CREATE DATABASE IF NOT EXISTS example_db;
USE example_db;
CREATE TABLE IF NOT EXISTS user_behavior (
user_id INT,
item_id INT,
behavior VARCHAR(20),
-- 假设Kafka中的时间戳是秒级或毫秒级,这里用BIGINT接收,后续可转为Doris的DATETIME
event_time BIGINT,
-- 生成一个计算列,将event_time转换为易读的日期时间格式
dt AS FROM_UNIXTIME(event_time, '%Y-%m-%d %H:%i:%s'),
-- 根据计算列dt生成一个分区列,按天分区
date_label AS DATE(FROM_UNIXTIME(event_time))
)
ENGINE=OLAP
DUPLICATE KEY(user_id, item_id, event_time) -- 明细模型
PARTITION BY RANGE(date_label) (
PARTITION p202310 VALUES [('2023-10-01'), ('2023-11-01'))
-- 可以动态添加分区,

最低0.47元/天 解锁文章
1510

被折叠的 条评论
为什么被折叠?



