使用S3-SDK访问对象存储
更新时间:2022-09-13
PALO 内置了 AWS S3 sdk,可以直接访问兼容 S3 API 的对象存储,如AWS S3,百度云对象存储 BOS,阿里云的 OOS 和腾讯云的 COS 等等。
通过 S3 sdk 访问对象存储可以不再依赖 Broker 组件。进一步降低 PALO 系统的运维复杂度。
使用 S3 SDK
任何通过 Broker 访问对象存储的操作,都可以用 S3 SDK 方式进行替换,这些操作包括:
本文我们针对不同云厂商的对象存储系统进行示例说明。
百度对象存储 BOS
我们以 Broker Load 数据导入为例:
LOAD LABEL db.label1 (
DATA INFILE("s3://my_bucket/test/example.txt")
INTO TABLE my_table
COLUMNS TERMINATED BY ","
)
WITH S3 (
"AWS_ACCESS_KEY" = "xxxxxxxxxxxxxxxxx",
"AWS_SECRET_KEY" = "yyyyyyyyyyyyyyyy",
"AWS_ENDPOINT" = "http://s3.bj.bcebos.com",
"AWS_REGION" = "bj"
)
PROPERTIES(
"exec_mem_limit" = "8589934592"
);
导入语法和 Broker Load 几乎一致,区别在于:
-
导入文件路径
导入文件路径需以
s3://
开头,之后的 bucket 以及路径和 Broker Load 中一致。 -
WITH 语句属性
WITH 语句从
WITH BROKER broker_name
改为WITH S3
,并填写以下4个属性:AWS_ACCESS_KEY
/AWS_SECRET_KEY
:对应bos_accesskey
和bos_secret_accesskey
,可在百度智能云页面右上角点击账户头像 -> 安全认证
获取。AWS_ENDPOINT
:对应bos_endpoint
,S3 兼容的服务域名在 这里 查看。AWS_REGION
:Bucket 所在地区,如 华北-北京 是bj
。一般显示在bos_endpoint
中。
其他操作如备份恢复、导出等改动类似,都主要包括路径和 WITH 语句属性的对应修改。这里不再赘述。
AWS S3
访问 AWS S3 的语法和访问 BOS 的相同。这里仅说明以下属性的获取方式:
AWS_ACCESS_KEY
/AWS_SECRET_KEY
:可在 aws 网站右上角个人账户名称->My Security Credentials
中创建。AWS_ENDPOINT
/AWS_REGION
:可以在 这里 的Amazon S3 Endpoints
章节获取 Region 和 Endpoint。
阿里云 OSS
访问 OSS 和访问 BOS 的相似:
LOAD LABEL db1.label1 (
DATA INFILE("s3://cmyrepo/load/1.txt")
INTO TABLE `tbl1`
COLUMNS TERMINATED BY ","
)
WITH S3
(
"AWS_ACCESS_KEY" = "LTAI5txxxxxxxxxxSvMDqf",
"AWS_SECRET_KEY" = "ZhZ6ojxxxxxxxxxxxxKRvl0cIo5b",
"AWS_ENDPOINT" = "http://oss-cn-beijing.aliyuncs.com",
"AWS_REGION" = "oss-cn-beijing"
);
这里说明以下属性的获取方式:
AWS_ACCESS_KEY
/AWS_SECRET_KEY
:可在 阿里云AccessKey管理 中创建和查看。AWS_ENDPOINT
/AWS_REGION
:可以在 这里 获取。
腾讯云 COS
腾讯云COS暂不支持,以下示例待更新。
访问 COS 的语法和访问 BOS 的相同。
LOAD LABEL db.label1 (
DATA INFILE("s3://cmyrepo-12345678/1.txt")
INTO TABLE tbl1
COLUMNS TERMINATED BY ","
)
WITH S3 (
"AWS_ACCESS_KEY" = "xxxxx",
"AWS_SECRET_KEY" = "yyyyy",
"AWS_ENDPOINT" = "cos.ap-beijing.myqcloud.com",
"AWS_REGION" = "ap-beijing"
)
PROPERTIES(
"exec_mem_limit" = "8589934592"
);
这里说明以下属性的获取方式: