MaxCompute catalog
StarRocks 从 v3.3 开始支持阿里云 MaxCompute(以前称为 ODPS)catalog。
MaxCompute catalog 是一种 external catalog,使您可以在不导入数据的情况下查询 MaxCompute 中的数据。
通过 MaxCompute catalog,您还可以使用 INSERT INTO 直接转换并导入 MaxCompute 中的数据。
使用说明
您只能使用 MaxCompute catalog 查询 MaxCompute 中的数据。您不能使用 MaxCompute catalog 删除、删除或插入数据到您的 MaxCompute 集群中。
集成准备
在创建 MaxCompute catalog 之前,请确保您的 StarRocks 集群可以正常访问您的 MaxCompute 服务。
创建 MaxCompute catalog
语法
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "odps",
CatalogParams,
ScanParams,
CachingMetaParams
)
参数
catalog_name
MaxCompute catalog 的名称。命名约定如下:
- 名称可以包含字母、数字(0-9)和下划线(_)。必须以字母开头。
- 名称区分大小写,长度不能超过 1023 个字符。
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 | 是 | 用于访问 MaxCompute 的配额名称。MaxCompute 提供两种数据传输资源:MaxCompute Tunnel 专用资源组(订阅)和存储 API(按量付费)。您可以根据资源类型执行以下操作以获取配额名称。 MaxCompute Tunnel 专用资源组:登录 MaxCompute 控制台。在顶部导航栏中选择一个区域。在左侧导航窗格中,选择工作区 > 配额以查看可用配额。有关更多信息,请参见 在 MaxCompute 控制台中管理计算资源配额。 存储 API:登录 MaxCompute 控制台。在左侧导航窗格中,选择租户 > 租户属性。在租户页面上,打开存储 API 开关。有关更多信息,请参见 使用存储 API(按量付费)。存储 API 的默认名称是 "pay-as-you-go"。 |
ScanParams
关于 StarRocks 如何访问存储在 MaxCompute 集群中的文件的一组参数。此参数集是可选的。
下表描述了您需要在 ScanParams
中配置的参数。
参数 | 必需 | 描述 |
---|---|---|
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 的创建语句。以下示例查询名为 odps_catalog
的 MaxCompute catalog 的创建语句:
SHOW CREATE CATALOG odps_catalog;