doris:阿里云 OSS 导入数据

Doris 提供两种方式从阿里云 OSS 导入文件:

  • 使用 S3 Load 将阿里云 OSS 文件导入到 Doris 中,这是一个异步的导入方式。
  • 使用 TVF 将阿里云 OSS 文件导入到 Doris 中,这是一个同步的导入方式。

使用 S3 Load 导入

使用 S3 Load 导入对象存储上的文件,详细步骤可以参考 Broker Load 手册

第 1 步:准备数据

创建 CSV 文件 s3load_example.csv 文件存储在阿里云 OSS 上,其内容如下:

复制代码
1,Emily,25
2,Benjamin,35
3,Olivia,28
4,Alexander,60
5,Ava,17
6,William,69
7,Sophia,32
8,James,64
9,Emma,37
10,Liam,64

第 2 步:在 Doris 中创建表

复制代码
CREATE TABLE test_s3load(
    user_id            BIGINT       NOT NULL COMMENT "user id",
    name               VARCHAR(20)           COMMENT "name",
    age                INT                   COMMENT "age"
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

第 3 步:使用 S3 Load 导入数据

注意

阿里云 OSS 公网和内网的 endpoint 是不同的。 如果服务器与 OSS 在同一个 region 下,建议使用内网的 endpoint 链接。

  • 内网 endpoint:oss-cn-hangzhou-internal.aliyuncs.com

  • 公网 endpoint:oss-cn-hangzhou.aliyuncs.com

    LOAD LABEL s3_load_2022_04_01
    (
    DATA INFILE("s3://your_bucket_name/s3load_example.csv")
    INTO TABLE test_s3load
    COLUMNS TERMINATED BY ","
    FORMAT AS "CSV"
    (user_id, name, age)
    )
    WITH S3
    (
    "provider" = "OSS",
    "s3.endpoint" = "oss-cn-hangzhou.aliyuncs.com",
    "s3.region" = "oss-cn-hangzhou",
    "s3.access_key" = "<your-ak>",
    "s3.secret_key" = "<your-sk>"
    )
    PROPERTIES
    (
    "timeout" = "3600"
    );

第 4 步:检查导入数据

复制代码
SELECT * FROM test_s3load;

结果:

复制代码
mysql> select * from test_s3load;
+---------+-----------+------+
| user_id | name      | age  |
+---------+-----------+------+
|       5 | Ava       |   17 |
|      10 | Liam      |   64 |
|       7 | Sophia    |   32 |
|       9 | Emma      |   37 |
|       1 | Emily     |   25 |
|       4 | Alexander |   60 |
|       2 | Benjamin  |   35 |
|       3 | Olivia    |   28 |
|       6 | William   |   69 |
|       8 | James     |   64 |
+---------+-----------+------+
10 rows in set (0.04 sec)

使用 TVF 导入

第 1 步:准备数据

创建 CSV 文件 s3load_example.csv 文件存储在阿里云 OSS 上,其内容如下:

复制代码
1,Emily,25
2,Benjamin,35
3,Olivia,28
4,Alexander,60
5,Ava,17
6,William,69
7,Sophia,32
8,James,64
9,Emma,37
10,Liam,64

第 2 步:在 Doris 中创建表

复制代码
CREATE TABLE test_s3load(
    user_id            BIGINT       NOT NULL COMMENT "user id",
    name               VARCHAR(20)           COMMENT "name",
    age                INT                   COMMENT "age"
)
DUPLICATE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

第 3 步:使用 TVF 导入数据

注意

阿里云 OSS 公网和内网的 endpoint 是不同的。 如果服务器与 OSS 在同一个 region 下,建议使用内网的 endpoint 链接。

  • 内网 endpoint:oss-cn-hangzhou-internal.aliyuncs.com

  • 公网 endpoint:oss-cn-hangzhou.aliyuncs.com

    INSERT INTO test_s3load
    SELECT * FROM S3
    (
    "uri" = "s3://your_bucket_name/s3load_example.csv",
    "format" = "csv",
    "provider" = "OSS",
    "s3.endpoint" = "oss-cn-hangzhou.aliyuncs.com",
    "s3.region" = "oss-cn-hangzhou",
    "s3.access_key" = "<your-ak>",
    "s3.secret_key" = "<your-sk>",
    "column_separator" = ",",
    "csv_schema" = "user_id:int;name:string;age:int"
    );

第 4 步:检查导入数据

复制代码
SELECT * FROM test_s3load;

结果:

复制代码
mysql> select * from test_s3load;
+---------+-----------+------+
| user_id | name      | age  |
+---------+-----------+------+
|       5 | Ava       |   17 |
|      10 | Liam      |   64 |
|       7 | Sophia    |   32 |
|       9 | Emma      |   37 |
|       1 | Emily     |   25 |
|       4 | Alexander |   60 |
|       2 | Benjamin  |   35 |
|       3 | Olivia    |   28 |
|       6 | William   |   69 |
|       8 | James     |   64 |
+---------+-----------+------+
10 rows in set (0.04 sec)
相关推荐
骇客野人7 分钟前
阿里云和腾讯云RocketMQ 发消息和消费消息客户端JAVA接口
阿里云·java-rocketmq·腾讯云
Trust yourself2438 分钟前
使用阿里云/腾讯云安装完成mysql使用不了
mysql·阿里云·腾讯云
攀小黑8 分钟前
阿里云 使用TST Token发送模板短信
java·阿里云
运维成长记9 分钟前
阿里云错题集分享
阿里云·云计算
云资源服务商11 分钟前
探秘阿里云消息队列:解锁分布式系统的异步通信奥秘
阿里云·中间件·云计算
bennybi12 分钟前
阿里云-跨账号同步OSS Bucket
阿里云·云计算
互联网搬砖老肖16 分钟前
运维打铁: 阿里云 ECS 实例的高效运维与管理
运维·阿里云·云计算
德育处主任Pro28 分钟前
「py数据分析」04如何将 Python 爬取的数据保存为 CSV 文件
数据库·python·数据分析
许白掰1 小时前
Linux入门篇学习——Linux 编写第一个自己的命令
linux·运维·数据库·嵌入式硬件·学习
打不了嗝 ᥬ᭄1 小时前
文件系统----底层架构
linux·运维·数据库