在上一篇文章中,我们介绍了如何使用 Flink CDC 将 mysql 数据接入 Doris 数据库。
这次我们来探讨下如何快速将 kafka 数据快速接入 Doris 数据库。这次我们将使用 Doris 提供的另外一种导入方式:Routine Load。
Doris Stream Load 也可以将 kafka 数据接入 Doris。
注意:
Routine Load支持的格式为 csv 和 json。json可以是 jsonObject,也可以是 jsonArray 仅支持 Kafka 0.10.0.0(含) 以上版本
CREATE TABLE demo.student (
`id` int NOT NULL COMMENT "id",
`name` varchar(32) NULL COMMENT "name",
`age` int NULL COMMENT "age"
) ENGINE=OLAP
UNIQUE KEY(`id`)
COMMENT "学生信息表"
DISTRIBUTED BY HASH(`id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"in_memory" = "false",
"storage_format" = "V2"
);
必须先创建 topic 才能创建后续的 routine load,否则会创建失败。
1, 小明 ,18
2, 小花 ,21
{"id":3,"name":"小刚","age":18}
[{"id":4,"name":"小夏","age":22},{"id":5,"name":"小小","age":32}]
,CREATE ROUTINE LOAD demo.test_job_csv ON student
COLUMNS TERMINATED BY ",",
COLUMNS(id, name, age),
WHERE id < 100
PROPERTIES
(
"desired_concurrent_number"="3",
"max_batch_interval" = "20",
"max_batch_rows" = "300000",
"max_batch_size" = "209715200",
"strict_mode" = "true"
)
FROM KAFKA
(
"kafka_broker_list" = "ip1:9092,ip2:9092",
"kafka_topic" = "test_job_csv",
"property.group.id" = "test_job_group_id",
"property.client.id" = "test_job_client_id",
"kafka_partitions" = "0",
"property.kafka_default_offsets" = "OFFSET_BEGINNING"
);
show routine load


CREATE ROUTINE LOAD demo.test_job_json ON student
COLUMNS(id, name, age),
WHERE id < 100
PROPERTIES
(
"desired_concurrent_number"="3",
"max_batch_interval" = "20",
"max_batch_rows" = "300000",
"max_batch_size" = "209715200",
"strict_mode" = "true",
"format" = "json",
"jsonpaths" = "[\"$.id\",\"$.name\",\"$.age\"]",
"strip_outer_array" = "false"
)
FROM KAFKA
(
"kafka_broker_list" = "ip1:9092,ip2:9092",
"kafka_topic" = "test_job_json",
"property.group.id" = "test_job_json_group_id",
"property.client.id" = "test_job_json_client_id",
"kafka_partitions" = "0",
"kafka_offsets" = "0"
);
show routine load


"strip_outer_array" = "true"。需要注意的是:topic 的数据只能是 csv,json 或者 json array 中的一种,不能将数据混合到一起,否则会导致任务异常终止的。
show routine load
ALTER ROUTINE LOAD FOR [db.]job_name
[job_properties]
FROM data_source
[data_source_properties]
[db.]job_name
指定要修改的作业名称job_properties
指定需要修改的作业参数data_source
修改数据源,目前只支持 kafkadata_source_properties
kafka 相关属性
PAUSE [ALL] ROUTINE LOAD FOR job_name
暂停名称为 test 的任务
PAUSE ROUTINE LOAD FOR test;暂停所有任务
PAUSE ALL ROUTINE LOAD;
STOP ROUTINE LOAD FOR job_name;
停止名称为 test 的任务
STOP ROUTINE LOAD FOR test;
RESUME [ALL] ROUTINE LOAD FOR job_name
恢复名称为 test 的任务
RESUME ROUTINE LOAD FOR test;恢复所有任务
RESUME ALL ROUTINE LOAD;
原文作者:毛毛小妖的笔记;如有侵权,请联系管理员删除。