华为云 OBS
更新时间:2025-05-29
PALO 提供两种方式从华为云 OBS 导入文件:
- 使用 S3 Load 将华为云 OBS 文件导入到 PALO 中,这是一个异步的导入方式。
- 使用 TVF 将华为云 OBS 文件导入到 PALO 中,这是一个同步的导入方式。
使用 S3 Load 导入
使用 S3 Load 导入对象存储上的文件。
第 1 步:准备数据
创建 CSV 文件 s3load_example.csv 文件存储在华为云 OBS 上,其内容如下:
                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 步:在 PALO 中创建表
                SQL
                
            
            1CREATE TABLE test_s3load(
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 步:使用 S3 Load 导入数据
                SQL
                
            
            1LOAD LABEL s3_load_2022_04_01
2(
3    DATA INFILE("s3://your_bucket_name/s3load_example.csv")
4    INTO TABLE test_s3load
5    COLUMNS TERMINATED BY ","
6    FORMAT AS "CSV"
7    (user_id, name, age)
8)
9WITH S3
10(
11    "provider" = "OBS",
12    "s3.endpoint" = "obs.cn-north-1.myhuaweicloud.com",
13    "s3.region" = "cn-north-1",
14    "s3.access_key" = "<your-ak>",
15    "s3.secret_key" = "<your-sk>"
16)
17PROPERTIES
18(
19    "timeout" = "3600"
20);第 4 步:检查导入数据
                SQL
                
            
            1SELECT * FROM test_s3load;结果:
                Plain Text
                
            
            1mysql> select * from test_s3load;
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 文件 s3load_example.csv 文件存储在华为云 OBS 上,其内容如下:
                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 步:在 PALO 中创建表
                SQL
                
            
            1CREATE TABLE test_s3load(
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 导入数据
                SQL
                
            
            1INSERT INTO test_s3load
2SELECT * FROM S3
3(
4    "uri" = "s3://your_bucket_name/s3load_example.csv",
5    "format" = "csv",
6    "provider" = "OBS",
7    "s3.endpoint" = "obs.cn-north-1.myhuaweicloud.com",
8    "s3.region" = "cn-north-1",
9    "s3.access_key" = "<your-ak>",
10    "s3.secret_key" = "<your-sk>",
11    "column_separator" = ",",
12    "csv_schema" = "user_id:int;name:string;age:int"
13);第 4 步:检查导入数据
                SQL
                
            
            1SELECT * FROM test_s3load;结果:
                Plain Text
                
            
            1mysql> select * from test_s3load;
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)