跳转至

7.4.11 阿里云 MaxCompute

MaxCompute 是阿里云上的企业级 SaaSSoftware as a Service )模式云数据仓库。

1 连接 MaxCompute

1.1 示例

SQL
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-- 1. 创建Catalog。
CREATE CATALOG mc PROPERTIES (
  "type" = "max_compute",
  "mc.default.project" = "xxx",
  "mc.access_key" = "xxxx",
  "mc.secret_key" = "xxx",
  "mc.endpoint" = "<http://service.cn-beijing-vpc.MaxCompute.aliyun-inc.com/api>"
);

-- 2. 切换到新创建的Catalog下。
SWITCH mc;

-- 下面的步骤就和使用Mysql一样了。

-- 3. 查看该Catalog下所有的数据库。
SHOW DATABASES;

-- 4. 使用数据库, 这里的xxx为第三步展示出来结果的任意一个数据库。
USE xxx;

-- 5. 查看该数据库下所有的表。
SHOW TABLES;

-- 6. 进行SQL查询。
select * from tb  limit 10;

1.2 创建Catalog的基本属性

参数 说明
type 固定为 max_compute.
mc.default.project 想要访问的 MaxCompute 项目名称。可以在 MaxCompute 项目列表 中创建和管理。
mc.access_key AccessKey。可以在 阿里云控制台 中创建和管理。
mc.secret_key SecretKey。可以在 阿里云控制台 中创建和管理。
mc.endpoint MaxCompute 开通的地域。请参照下文的如何获取Endpoint 和 Quota来配置。

1.3 创建Catalog的可选属性

参数 默认值 说明
mc.quota pay-as-you-go Quota名称。请参照下文的 如何获取Endpoint 和 Quota 来配置。
mc.split_strategy byte_size 设置split的划分方式, 可设置为按照字节大小划分 byte_size 和按照数据行数划分 row_count
mc.split_byte_size 268435456 每个split读取的文件大小,单位为字节,默认为256MB,当且仅当 "mc.split_strategy" = "byte_size" 时生效
mc.split_row_count 1048576 每个split读多少行,当且仅当 "mc.split_strategy" = "row_count" 时生效

2 列类型映射

MaxCompute Doris 备注
TINYINT TINYINT
TINYINT TINYINT
SMALLINT SMALLINT
INT INT
BIGINT BIGINT
BINARY 不支持
FLOAT FLOAT
DOUBLE DOUBLE
DECIMAL(precision,scale) DECIMAL(precision,scale)
VARCHAR(n) VARCHAR(n)
CHAR(n) CHAR(n)
STRING STRING
DATE DATE
DATETIME DATETIME(3) 可以通过SET [global] time_zone = 'Asia/Shanghai'来指定时区
TIMESTAMP 不支持
TIMESTAMP_NTZ DATETIME(6) MaxCompute 的 TIMESTAMP_NTZ 精度为9, Doris 的 DATETIME 最大精度只有6,故读取数据时会将多的部分直接截断。
BOOLEAN BOOLEAN
ARRAY ARRAY
MAP MAP
STRUCT STRUCT
JSON 不支持

3 使用须知

  1. 3.0.3 版本开始, MaxCompute Catalog 基于开放存储 SDK 开发。

  2. 开放存储 SDK 的使用有一定的限制,请参照该文档中使用限制的章节。

  3. MaxCompute 中的 Project 相当于 Doris 中的 DataBase

4 如何获取 Endpoint 和 Quota

  1. 如果您使用数据传输服务独享资源组,请参照该文档中 使用独享数据服务资源组 章节中的 2.授权 来开启相应的权限,并在配额( Quota )管理列表中,查看并复制对应的 QuotaName ,指定 "mc.quota" = "QuotaName" 。此时您可以选择 VPC 或公网来访问 MaxCompute ,但是走 VPC 的带宽有保障,公网带宽资源小。

  2. 如果您使用按量付费,请参照该文档中使用开放存储(按量付费)的章节,来开启开放存储( Storage API )开关,并给 AkSK 对应的用户赋予权限。此时您的 mc.quota 为默认值 pay-as-you-go ,不需要额外指定该值。此时您只能使用 VPC 来访问 MaxCompute

  3. 通过第 1/2 步,您已经知道该如何访问 MaxCompute ,下面需要根据阿里云 Endpoints 文档中的地域 Endpoint 对照表来配置 mc.endpoint 。使用 VPC 访问的用户,需要根据各地域 Endpoint 对照表(阿里云 VPC 网络连接方式)表中的 VPC 网络 Endpoint 列来配置 mc.endpoint 。使用公网访问的用户,可以选择各地域 Endpoint 对照表(阿里云经典网络连接方式)表中的经典网络 Endpoint 列、或者选择各地域 Endpoint 对照表(外网连接方式)表中的外网 Endpoint 列来配置 mc.endpoint