Apache Doris (二十七):Doris 数据导入(五)HDFS Load

目录

1. HDFS Load案例

2. 注意事项


进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容!

宝子们订阅、点赞、收藏不迷路!抓紧订阅专题!


HDFS Load主要是将HDFS中的数据导入到Doris中,Hdfs load 创建导入语句,导入方式和Broker Load 基本相同,只需要将 WITH BROKER broker_name语句替换成 With HDFS即可。下面演示HDFS Load使用方式。

​​​​​​​1. HDFS Load案例

1) 创建Doris表

create table hdfs_load_t(
id int,
name string,
age int,
score double
) 
ENGINE = olap
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(`id`) BUCKETS 8;

2) 准备HDFS数据

准备数据文件file.txt,内容如下:

1,zs,18,92.20
2,ls,19,87.51
3,ww,20,34.12
4,ml,21,89.33
5,tq,22,79.44

启动HDFS ,将以上文件上传至HDFS /input/目录下,该文件与Broker Load案例1中的文件一样。

#创建目录,上传文件
[root@node1 ~]# hdfs dfs -mkdir /input
[root@node1 ~]# hdfs dfs -put ./file.txt /input/

3) 准备HDFS Load语句

如果之前使用过某个label,可以通过如下命令清理对应库中历史label:

#清理 example_db中,Label 为 label1 的导入作业。
clean label label1 from example_db;

清理 example_db中所有历史 Label。
clean label from example_db;

编写HDFS Load语句,与Broker Load稍有不同的一点是指定HDFS用户参数为hdfs_user,

LOAD LABEL example_db.label1
(
DATA INFILE("hdfs://mycluster/input/file.txt")
INTO TABLE `hdfs_load_t`
COLUMNS TERMINATED BY ","
)
WITH HDFS
(
"hdfs_user"="root",
"fs.defaultFS"="hdfs://mycluster",
"dfs.ha.namenodes.mycluster"="node1,node2",
"dfs.namenode.rpc-address.mycluster.node1"="node1:8020",
"dfs.namenode.rpc-address.mycluster.node2"="node2:8020",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
);

向表hdfs_load_t中导入文件file.txt。“username”指定hdfs用户,“password”指定hdfs密码,没有hdfs密码就填写空即可。

4) 查看导入状态

使用如下命令查看导入任务的状态信息:

mysql> show load order by createtime desc limit 1\G;
*************************** 1. row ***************************
         JobId: 42148
         Label: label1
         State: FINISHED
      Progress: ETL:100%; LOAD:100%
          Type: BROKER
       EtlInfo: unselected.rows=0; dpp.abnorm.ALL=0; dpp.norm.ALL=5
      TaskInfo: cluster:N/A; timeout(s):14400; max_filter_ratio:0.0
      ErrorMsg: NULL
    CreateTime: 2023-03-13 14:55:18
  EtlStartTime: 2023-03-13 14:55:21
 EtlFinishTime: 2023-03-13 14:55:21
 LoadStartTime: 2023-03-13 14:55:21
LoadFinishTime: 2023-03-13 14:55:22
           URL: NULL
    JobDetails: {"Unfinished backends":{"bbd718354cf7474d-93546d15f8530e9c":[]},"ScannedRows":5,"TaskNumber":1,"LoadBytes":130,"All backends":{"b
bd718354cf7474d-93546d15f8530e9c":[11002]},"FileNumber":1,"FileSize":70} TransactionId: 27031
  ErrorTablets: {}
1 row in set (0.01 sec)

注意:如果load过程中有错误信息,可以通过执行“show load order by createtime desc limit 1\G;”命令查看到对应的Error信息,或者浏览器输入展示出的URL来查看错误信息。

5) 查看结果

#查询doris hdfs_load_t表
mysql> select * from hdfs_load_t;
+------+------+------+-------+
| id   | name | age  | score |
+------+------+------+-------+
|    1 | zs   |   18 |  92.2 |
|    4 | ml   |   21 | 89.33 |
|    3 | ww   |   20 | 34.12 |
|    2 | ls   |   19 | 87.51 |
|    5 | tq   |   22 | 79.44 |
+------+------+------+-------+

2. 注意事项

  1. HDFS Load 与Broker Load 一样,并且底层就是转换成Broker Load进行导入数据。
  2. 除了有HDFS Load外,还有S3 Load ,两者都是将外部存储数据导入到Doris中。使用方式参考官网:https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-scenes/external-storage-load、https://doris.apache.org/zh-CN/docs/dev/data-operate/import/import-way/s3-load-manual

你可能感兴趣的:(Apache,Doris,doris,实时数仓,olap,数据仓库,大数据,分布式数据库)