HDFS
更新时间:2025-05-29
Doris 提供两种方式从 HDFS 导入文件:
- 使用 HDFS Load 将 HDFS 文件导入到 Doris 中,这是一个异步的导入方式。
- 使用 TVF 将 HDFS 文件导入到 Doris 中,这是一个同步的导入方式。
使用 HDFS Load 导入
使用 HDFS Load 导入 HDFS 上的文件,详细步骤可以参考 Broker Load 手册
第 1 步:准备数据
创建 CSV 文件 hdfsload_example.csv 文件存储在 HDFS 上,其内容如下:
Plain Text
11,Emily,25
22,Benjamin,35
33,Olivia,28
44,Alexander,60
55,Ava,17
66,William,69
77,Sophia,32
88,James,64
99,Emma,37
1010,Liam,64
第 2 步:在 Doris 中创建表
Plain Text
1CREATE TABLE test_hdfsload(
2 user_id BIGINT NOT NULL COMMENT "user id",
3 name VARCHAR(20) COMMENT "name",
4 age INT COMMENT "age"
5)
6DUPLICATE KEY(user_id)
7DISTRIBUTED BY HASH(user_id) BUCKETS 10;
第 3 步:使用 HDFS Load 导入数据
Plain Text
1LOAD LABEL hdfs_load_2022_04_01
2(
3 DATA INFILE("hdfs://127.0.0.1:8020/tmp/hdfsload_example.csv")
4 INTO TABLE test_hdfsload
5 COLUMNS TERMINATED BY ","
6 FORMAT AS "CSV"
7 (user_id, name, age)
8)
9with HDFS
10(
11 "fs.defaultFS" = "hdfs://127.0.0.1:8020",
12 "hadoop.username" = "user"
13)
14PROPERTIES
15(
16 "timeout" = "3600"
17);
第 4 步:检查导入数据
Plain Text
1SELECT * FROM test_hdfsload;
结果:
Plain Text
1mysql> select * from test_hdfsload;
2+---------+-----------+------+
3| user_id | name | age |
4+---------+-----------+------+
5| 5 | Ava | 17 |
6| 10 | Liam | 64 |
7| 7 | Sophia | 32 |
8| 9 | Emma | 37 |
9| 1 | Emily | 25 |
10| 4 | Alexander | 60 |
11| 2 | Benjamin | 35 |
12| 3 | Olivia | 28 |
13| 6 | William | 69 |
14| 8 | James | 64 |
15+---------+-----------+------+
1610 rows in set (0.04 sec)
使用 TVF 导入
第 1 步:准备数据
创建 CSV 文件 hdfsload_example.csv 文件存储在 HDFS 上,其内容如下:
Plain Text
11,Emily,25
22,Benjamin,35
33,Olivia,28
44,Alexander,60
55,Ava,17
66,William,69
77,Sophia,32
88,James,64
99,Emma,37
1010,Liam,64
第 2 步:在 Doris 中创建表
Plain Text
1CREATE TABLE test_hdfsload(
2 user_id BIGINT NOT NULL COMMENT "user id",
3 name VARCHAR(20) COMMENT "name",
4 age INT COMMENT "age"
5)
6DUPLICATE KEY(user_id)
7DISTRIBUTED BY HASH(user_id) BUCKETS 10;
第 3 步:使用 TVF 导入数据
Plain Text
1INSERT INTO test_hdfsload
2SELECT * FROM hdfs (
3 "uri" = "hdfs://127.0.0.1:8020/tmp/hdfsload_example.csv",
4 "fs.defaultFS" = "hdfs://127.0.0.1:8020",
5 "hadoop.username" = "doris",
6 "format" = "csv",
7 "csv_schema" = "user_id:int;name:string;age:int"
8);
第 4 步:检查导入数据
Plain Text
1SELECT * FROM test_hdfsload;
结果:
Plain Text
1mysql> select * from test_hdfsload;
2+---------+-----------+------+
3| user_id | name | age |
4+---------+-----------+------+
5| 5 | Ava | 17 |
6| 10 | Liam | 64 |
7| 7 | Sophia | 32 |
8| 9 | Emma | 37 |
9| 1 | Emily | 25 |
10| 4 | Alexander | 60 |
11| 2 | Benjamin | 35 |
12| 3 | Olivia | 28 |
13| 6 | William | 69 |
14| 8 | James | 64 |
15+---------+-----------+------+
1610 rows in set (0.04 sec)