简述
Broker load 是异步导入方式,支持的数据源取决于 Broker 进程支持的数据源。
因为 Doris 表里的数据是有序的,所以 Broker load 在导入数据的时是要利用doris 集群资源对数据进行排序,相对于 Spark load 来完成海量历史数据迁移,对 Doris 的集群资源占用要比较大,这种方式是在用户没有 Spark 这种计算资源的情况下使用,如果有 Spark 计算资源建议使用 Spark load。
用户需要通过 MySQL 协议 创建 Broker load 导入,并通过查看导入命令检查导入结果。
适用场景
源数据在 Broker 可以访问的存储系统中,如 HDFS。
数据量在 几十到百GB 级别。
操作:
导入文件user.csv的内容:
csv
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2021-8-6 9:44
267456198006210000,李四,25,1,河南省,郑州市,郑东新区,18681109672,1980-6-21,音乐;阅读;旅游,2019-4-7 9:14
892456199007203000,王五,24,1,湖北省,武汉市,汉阳区,18798009102,1990-7-20,写代码;读代码;算法,2021-6-8 7:34
492456198712198000,赵六,26,2,陕西省,西安市,莲湖区,18189189195,1987-12-19,购物;旅游,2021-1-9 19:15
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2020-8-6 9:44
392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2019-8-6 9:44
shell
# 把文件上传到hdfs
hadoop fs -mkdir /datas
hadoop fs -put user.csv /datas
shell
# 执行导入
LOAD LABEL test_db.user_result # 这里的标签可以随便写,只要全局唯一即可
(
DATA INFILE("hdfs://node01:8020/datas/user.csv")# 输入文件位置,这里是hdfs上的路径
INTO TABLE `user_result` # 导入到的表
COLUMNS TERMINATED BY "," # 字段分隔符
FORMAT As "csv"
(id, name, age, gender,province, city,region, phone, birthday, hobby, registe, r_date)
)
# broker名称,可以通过show borker查看,不能写错
WITH BROKER broker_10_20_30
(
"username" = "",
"password" = "",
"fs.defaultFS" = "hdfs://my_ha",
"dfs.nameservices" = "my_ha",
"dfs.ha.namenodes.my_ha" = "my_namenode1, my_namenode2",
# nameservices.namenodes,按顺序选择,第一个不工作一次往下找
"dfs.namenode.rpc-address.my_ha.my_namenode1" = "nn1_host:rpc_port",
"dfs.namenode.rpc-address.my_ha.my_namenode2" = "nn2_host:rpc_port",
"dfs.client.failover.proxy.provider.my_ha" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)
properties
(
"max_filter_ratio"="0.00002" # 最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。取值范围为 0 到 1。
)
sql
# 查看导入
show load order by createtime desc \G
sql
# 取消导入,根据label
cancel load from test_db where LABEL = "test_db.user_result";