持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第7天,点击查看活动详情
前置操作
-
启动zookeeper集群(三台节点都启动):zkServer.sh start
-
启动kafka集群,创建topic,并向topic写入一批数据
创建例行导入任务
创建例行导入任务的的详细语法可以连接到 Doris 后,执行 HELP ROUTINE LOAD; 查看语法帮助。这里主要详细介绍,创建作业时的注意事项。
语法:
CREATE ROUTINE LOAD [ db .] job_name ON tbl_name
[ load_properties ]
[ job_properties ]
FROM data_source
[ data_source_properties ]
数据导入演示
| 操作步骤 | 说明 |
|---|---|
| 1 | 启动kafka集群(三台节点都启动) |
| cd /export/server/kafka_2.11-0.10.0.0nohup bin/kafka-server-start.sh config/server.properties 2>&1 & | |
| 2 | 创建topic |
| bin/kafka-topics.sh --create --zookeeper node1:2181,node2:2181,node3:2181 --replication-factor 1 --partitions 1 --topic test | |
| 3 | 往test topic中插入一批测试数据 |
| 启动kafka生产者命令行工具 | |
| bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test | |
| 每个字段以\t分割 | |
| 4 | 在doris中创建对应表 |
| create table student_kafka**(**id int **,**name varchar ( 50 **),age int)**DUPLICATE KEY ( id **)**DISTRIBUTED BY HASH ( id ) BUCKETS 10 ; | |
| 5 | 创建导入作业,desired_concurrent_number指定并行度 |
| CREATE ROUTINE LOAD test_db . kafka_job1 on student_kafkaPROPERTIES**(** "desired_concurrent_number"="1" ,"strict_mode"="false", "format" = "json")FROM KAFKA( "kafka_broker_list"= "node1:9092,node2:9092,node3:9092" , "kafka_topic" = "test" , "property.group.id" = "test_group_1" , "property.kafka_default_offsets" = "OFFSET_BEGINNING" , "property.enable.auto.commit" = "false"); | |
| 6 | 查询表的数据(有一定延迟时间) |
| select * from student_kafka; |
查看导入作业状态
-
查看作业状态的具体命令和示例可以通过 HELP SHOW ROUTINE LOAD; 命令查看。
-
只能查看当前正在运行中的任务,已结束和未开始的任务无法查看。
| HELP SHOW ROUTINE LOAD; |
|---|
| SHOW ALL ROUTINE LOAD;显示 test_db 下,所有的例行导入作业(包括已停止或取消的作业)。结果为一行或多行。 |
修改作业属性
用户可以修改已经创建的作业。具体说明可以通过 HELP ALTER ROUTINE LOAD; 命令查看。
作业控制
用户可以通过一下 三个命令来控制作业:
-
STOP:停止
-
PAUSE:暂停
-
RESUME:重启
可以通过以下三个命令查看帮助和示例。
-
HELP STOP ROUTINE LOAD;
-
HELP PAUSE ROUTINE LOAD;
-
HELP RESUME ROUTINE LOAD;
Insert Into
Insert Into 语句的使用方式和 MySQL 等数据库中 Insert Into 语句的使用方式类似。但在 Doris 中,所有的数据写入都是一个独立的导入作业。所以这里将 Insert Into 也作为一种导入方式介绍。
主要的 Insert Into 命令包含以下两种;
-
INSERT INTO tbl SELECT ...
-
INSERT INTO tbl (col1, col2, ...) VALUES (1, 2, ...), (1,3, ...);
其中第二种命令仅用于 Demo,不要使用在测试或生产环境中。