[Preview] MaxCompute catalog
StarRocks 从 3.3 版本开始支持 Alibaba Cloud MaxCompute (即以前的 ODPS) Catalog。
MaxCompute Catalog 是一种 External Catalog。通过 MaxCompute Catalog,您不需要执行数据导入就可以直接查询 MaxCompute 里的数据。
此外,您还可以基于 MaxCompute Catalog,结合 INSERT INTO 能力来实现数据转换和导入。
使用说明
MaxCompute Catalog 仅支持查询 MaxCompute 里的数据,不支持针对 MaxCompute 的写/删操作。
准备工作
在创建 MaxCompute Catalog 之前,请确保 StarRocks 集群能够正常访问 MaxCompute 的服务。
创建 MaxCompute Catalog
语法
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
参数说明
catalog_name
MaxCompute Catalog 的名称。命名要求如下:
- 必须由字母 (a-z 或 A-Z)、数字 (0-9) 或下划线 (_) 组成,且只能以字母开头。
- 总长度不能超过 1023 个字符。
- Catalog 名称大小写敏感。
comment
MaxCompute Catalog 的描述。此参数为可选。
type
数据源的类型。设置为 odps
。
CatalogParams
StarRocks 访问 MaxCompute 集群的相关参数配置。
CatalogParams
包含如下参数。
参数 | 是否必须 | 说明 |
---|---|---|
odps.endpoint | 是 | MaxCompute 服务的连接地址 (Endpoint)。您需要根据创建 MaxCompute 项目时选择的地域、以及网络连接方式来配置 Endpoint。有关各地域及网络连接方式对应的 Endpoint 值,请参见 Endpoint。注意,为提供最佳体验,当前仅支持使用阿里云 VPC 网络及经典网络连接方式。 |
odps.project | 是 | 访问的目标 MaxCompute 项目的名称。如果您创建了标准模式的工作空间,在配置此参数时,请注意区分生产环境与开发环境(_dev)的项目名称。您可以登录MaxCompute 控制台,在工作区 > 项目管理页面获取 MaxCompute 项目名称。 |
odps.access.id | 是 | 阿里云账号或 RAM 用户的 AccessKey ID。您可以进入 AccessKey 管理页面获取 AccessKey ID。 |
odps.access.key | 是 | AccessKey ID 对应的 AccessKey Secret。您可以进入 AccessKey 管理页面获取AccessKey Secret。 |
odps.tunnel.endpoint | 否 | Tunnel 服务的外网访问链接。如果您未配置 Tunnel Endpoint,Tunnel 会自动路由到 MaxCompute 服务所在网络对应的 Tunnel Endpoint。如果您配置了 Tunnel Endpoint,则以配置为准,不进行自动路由。 |
odps.tunnel.quota | 是 | 数据传输使用的资源组名称。StarRocks 需要使用 Maxcompute 独享资源组,对数据进行拉取。 |
ScanParams
StarRocks 访问 MaxCompute 集群文件存储的相关参数配置。此组参数为可选。
参数 | 是否必须 | 说明 |
---|---|---|
odps.split.policy | 否 | 扫描数据时所使用的分片策略 。 取值范围: size (按数据大小分片)、row_offset (按行数分片)。默认值:size 。 |
odps.split.row.count | 否 | 当 odps.split.policy 设置为 row_offset 时,每个分片的最大行数。默认值: 4 * 1024 * 1024 = 4194304 。 |
CachingMetaParams
StarRocks 缓存 Hive 元数据的相关参数配置。此组参数为可选。
CachingMetaParams
包含如下参数。
参数 | 是否必须 | 说明 |
---|---|---|
odps.cache.table.enable | 否 | 指定 StarRocks 是否缓存 MaxCompute 表的元数据。取值范围:true 和 false 。默认值:true 。取值为 true 表示开启缓存,取值为 false 表示关闭缓存。 |
odps.cache.table.expire | 否 | StarRocks 自动淘汰缓存的 MaxCompute 表或分区的元数据的时间间隔。单位:秒。默认值:86400 ,即 24 小时。 |
odps.cache.table.size | 否 | StarRocks 缓存 MaxCompute 表的元数据的数量。默认值:1000 。 |
odps.cache.partition.enable | 否 | 指定 StarRocks 是否缓存 MaxCompute 表所有分区的元数据。取值范围:true 和 false 。默认值:true 。取值为 true 表示开启缓存,取值为 false 表示关闭缓存。 |
odps.cache.partition.expire | 否 | StarRocks 自动淘汰缓存的 MaxCompute 表所有分区的元数据的时间间隔。单位:秒。默认值:86400 ,即 24 小时。 |
odps.cache.partition.size | 否 | StarRocks 缓存 MaxCompute 表所有分区的表数量。默认值:1000 。 |
odps.cache.table-name.enable | 否 | 指定 StarRocks 是否缓存 MaxCompute 项目中表信息。取值范围:true 和 false 。默认值:false 。取值为 true 表示开启缓存,取值为 false 表示关闭缓存。 |
odps.cache.table-name.expire | 否 | StarRocks 自动淘汰缓存的 MaxCompute 项目中表信息的时间间隔。单位:秒。默认值:86400 ,即 24 小时。 |
odps.cache.table-name.size | 否 | StarRocks 缓存的 MaxCompute 项目数量。默认值:1000 。 |
示例
以下示例创建了一个名为 odps_catalog
的 MaxCompute Catalog,使用 odps_project
作为项目空间:
CREATE EXTERNAL CATALOG odps_catalog
PROPERTIES
(
"type"="odps",
"odps.access.id"="<maxcompute_user_access_id>",
"odps.access.key"="<maxcompute_user_access_key>",
"odps.endpoint"="<maxcompute_server_endpoint>",
"odps.project"="odps_project"
);
查看 MaxCompute Catalog
您可以通过 SHOW CATALOGS 查询当前所在 StarRocks 集群里所有 Catalog:
SHOW CATALOGS;
您也可以通过 SHOW CREATE CATALOG 查询某个 External Catalog 的创建语句。例如,通过如下命令查询 MaxCompute Catalog odps_catalog
的创建语句:
SHOW CREATE CATALOG odps_catalog;
删除 MaxCompute Catalog
您可以通过 DROP CATALOG 删除某个 External Catalog。
例如,通过如下命令删除 MaxCompute Catalog odps_catalog
:
DROP CATALOG odps_catalog;
查看 MaxCompute 表结构
您可以通过如下方法查看 MaxCompute 表的表结构:
-
查看表结构
DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
-
从 CREATE 命令查看表结构和表文件存放位置
SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;