Kafka 数据实时写入 StarRocks:深入解析 Routine Load 任务

  本文介绍 Routine Load 的基本原理、以及如何通过 Routine Load 持续消费 Apache Kafka® 的消息并导入至 StarRocks 中。

如果您需要将消息流不间断地导入至 StarRocks,则可以将消息流存储在 Kafka 的 Topic 中,并向 StarRocks 提交一个 Routine Load 导入作业。 StarRocks 会常驻地运行这个导入作业,持续生成一系列导入任务,消费 Kafka 集群中该 Topic 中的全部或部分分区的消息并导入到 StarRocks 中。

Routine Load 任务简介

概念

  • 导入作业(Load job)

    导入作业会常驻运行,当导入作业的状态为 RUNNING 时,会持续不断生成一个或多个并行的导入任务,不断消费 Kafka 集群中一个 Topic 的消息,并导入至 StarRocks 中。

  • 导入任务(Load task)

    导入作业会按照一定规则拆分成若干个导入任务。导入任务是执行导入的基本单位,作为一个独立的事务,通过 Stream Load 导入机制实现。若干个导入任务并行消费一个 Topic 中不同分区的消息,并导入至 StarRocks 中。

 

实际操作流程

  这里通过简单的示例,介绍如何通过 Routine Load 持续消费 Kafka 中 JSON 格式的数据,并导入至 StarRocks 中。有关创建 Routine Load 的详细语法和参数说明,请参见 CREATE ROUTINE LOAD

1、创建数据表

CREATE TABLE kafka_table (
    id int,
    name varchar(20)
)
ENGINE=OLAP
DUPLICATE KEY(id)
COMMENT "OLAP"
DISTRIBUTED BY HASH(id) BUCKETS 3
PROPERTIES (
    "replication_num" = "1",
    "in_memory" = "false",
    "storage_format" = "DEFAULT"
);

 

2、创建任务

CREATE ROUTINE LOAD bigdata_test.kafka_table_load
ON kafka_table
COLUMNS(id,name)
PROPERTIES
(
    "desired_concurrent_number"="3",
    "max_batch_interval"="20",
    "max_batch_rows"="300000",
    "max_batch_size"="209715200",
    "strict_mode"="false",
    "format"="json"
)
FROM KAFKA
(
    "kafka_broker_list" = "broker_ip:port",
    "kafka_topic" = "topic",
    "kafka_partitions" = "0,1,2"
);

 

3、查看任务状态等信息

show routine load;
-- 查看任务
SHOW ROUTINE LOAD TASK WHERE JobName ='kafka_table_load';
-- 暂停任务
PAUSE ROUTINE LOAD FOR kafka_table_load;
-- 恢复任务
RESUME ROUTINE LOAD FOR kafka_table_load;

 

posted @ 2024-05-28 18:27  LUDAGOGO  阅读(732)  评论(0)    收藏  举报