MaxCompute 是阿里云上的企业级 SaaS(Software as a Service)模式云数据仓库。
什么是 MaxCompute
连接 MaxCompute
示例
-- 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;
创建 Catalog 的基本属性
| 参数 | 说明 |
|---|---|
| type | 固定为 max_compute. |
| mc.default.project | 想要访问的 MaxCompute 项目名称。可以在 MaxCompute 项目列表 中创建和管理。 |
| mc.access_key | AccessKey。可以在 阿里云控制台 中创建和管理。 |
| mc.secret_key | SecretKey。可以在 阿里云控制台 中创建和管理。 |
| mc.endpoint | MaxCompute 开通的地域。请参照下文的如何获取Endpoint 和 Quota来配置。 |
创建 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" 时生效 |
列类型映射
| 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 | 不支持 |
使用须知
- 自 2.1.7 版本开始,MaxCompute Catalog 基于 开放存储 SDK 开发。
- 开放存储 SDK 的使用有一定的限制,请参照该 文档 中
使用限制的章节。 - MaxCompute 中的 Project 相当于 Doris 中的 DataBase。
如何获取 Endpoint 和 Quota
-
如果您使用数据传输服务独享资源组,请参照该 文档 中
使用独享数据服务资源组章节中的2.授权来开启相应的权限,并在配额(Quota)管理列表中,查看并复制对应的 QuotaName,指定"mc.quota" = "QuotaName"。此时您可以选择 VPC / 公网来访问 MaxCompute,但是走 VPC 的带宽有保障,公网带宽资源小。 -
如果您使用按量付费,请参照该 文档 中
使用开放存储(按量付费)的章节,来开启开放存储 (Storage API) 开关,并给 Ak,SK 对应的用户赋予权限。此时您的mc.quota为默认值pay-as-you-go,不需要额外指定该值。此时您只能使用 VPC 来访问 MaxCompute。 -
通过第 1/2 步,您已经知道该如何访问 MaxCompute,下面需要根据 阿里云 Endpoints 文档 中的
地域Endpoint对照表来配置mc.endpoint。使用 VPC 访问的用户,需要根据各地域Endpoint对照表(阿里云VPC网络连接方式)表中的VPC网络Endpoint列来配置mc.endpoint。使用公网访问的用户,可以选择各地域Endpoint对照表(阿里云经典网络连接方式)表中的经典网络Endpoint列、或者选择各地域Endpoint对照表(外网连接方式)表中的外网Endpoint列来配置mc.endpoint。
