使用S3-SDK访问对象存储

          PALO

          使用S3-SDK访问对象存储

          Doris 内置了 AWS S3 sdk,可以直接访问兼容 S3 API 的对象存储,如AWS S3,百度云对象存储 BOS,阿里云的 OOS 和腾讯云的 COS 等等。

          通过 S3 sdk 访问对象存储可以不再依赖 Broker 组件。进一步降低 Doris 系统的运维复杂度。

          使用 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 几乎一致,区别在于:

          1. 导入文件路径

            导入文件路径需以 s3:// 开头,之后的 bucket 以及路径和 Broker Load 中一致。

          2. WITH 语句属性

            WITH 语句从 WITH BROKER broker_name 改为 WITH S3,并填写以下4个属性:

            • AWS_ACCESS_KEY/AWS_SECRET_KEY:对应 bos_accesskeybos_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"
          );

          这里说明以下属性的获取方式:

          腾讯云 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"
          );

          这里说明以下属性的获取方式:

          • AWS_ACCESS_KEY/AWS_SECRET_KEY:可在 腾讯云控制台 右侧 访问密钥->API密钥管理 出获取。其中 SecretId 对应 AWS_ACCESS_KEYSecretKey 对应 AWS_SECRET_KEY
          • AWS_ENDPOINT/AWS_REGION:可以在 这里 获取。
          上一篇
          试验功能
          下一篇
          最佳实践