数据湖计算 DLC StarRocks 直接查询 DLC 内部存储

StarRocks 是新一代极速全场景 MPP 数据库, 充分吸收了关系型 OLAP 数据库和分布式存储系统在大数据时代的优秀研究成果,在业界实践的基础上,进一步改进优化、升级架构,并增添了众多全新功能,形成了全新的企业级产品。StarRocks 致力于构建极速统一分析体验,满足企业用户的多种数据分析场景,支持多种数据模型(明细模型、聚合模型、更新模型),多种导入方式(批量和实时),支持导入多达10000列的数据,可。

相关产品
数据湖计算 DLC 产品页,含版本规格、价格与购买入口。

一、StarRocks 是什么

在腾讯云弹性 MapReduce 产品中,我们提供了完全开箱即用的 StarRocks 服务,详细可参考 StarRocks 简介。

二、StarRocks+DLC 湖仓一体查询加速

腾讯云数据湖 DLC 支持基于 EMR StarRocks 的湖仓一体查询加速模式,该模式无需将数据导入 StarRocks 或创建外部表,即可直接对 DLC 数据源执行复杂 SQL 查询。基于 StarRocks 的 MPP 向量化查询能力,提升了数据分析效率并降低了运维难度和成本。

接下来,这里说明如何开启 DLC + (EMR)StarRocks 湖仓一体查询加速。

三、前提条件

1. 已购买弹性 MapReduce StarRocks 集群。

2. 已开通数据湖计算 DLC 服务。

注意:1. 当前暂不支持跨地域联邦 DLC,请合理规划环境,确保 EMR StarRocks、DLC 在相同地域。

注意:2. 暂不支持查询2024年6月12日前创建的 DLC 存量原生表(DLC 存量原生表的存储路径为 lakefs://*** ,此格式暂不兼容)—— 可支持6月12日后创建的 DLC 新原生表(存储路径为cosn://***)及 DLC 所有外表。

注意:3. StarRocks 仅支持查询 DLC 数据,不支持执行写和删除 DLC 数据的操作。

为开通 DLC+StarRocks 湖仓一体查询加速,你需要首先开启 DLC 外部访问,让 StarRocks 集群可访问到 DLC 内部托管存储的数据。随后在 StarRocks 集群中创建 DLC External Catalog,即可使用 StarRocks 计算引擎直接分析 DLC 存储数据。

四、开启 DLC 外部访问

进入 数据湖计算 DLC 控制台,单击存储配置菜单,选择开启外部访问。

第一步:单击“开启外部访问托管存储”,开启后你同一腾讯云账号下的 EMR StarRocks 集群即可访问 DLC 内部托管存储。后续你在此通过单击开关,来开启或关闭 DLC 内部托管存储的外部访问服务。

开启外部访问的账号需要有 DLC 的管理权限,请使用主账号(或有 DLC 管理员权限的子账号)进行此操作。

注意:1. 若你已有 DLC 的管理员权限,此步骤可忽略。

注意:2. 若你使用的是子账号,且没有 DLC 管理员权限,可参考文档 子账号权限管理 让有 DLC 管理员权限的账号为你授权。

第二步:为确保你 EMR StarRocks 集群能正确访问到 DLC 的元数据 Catalog 服务,你需要将 EMR StarRocks 的 VPC 绑定到 DLC 网络中。

1. 单击“绑定VPC”,在对话框中类型选择 EMR StarRocks,并在 EMR 实例下拉列表选择需要绑定的 EMR StarRocks 集群实例 ID;

2. StarRocks 集群所在 VPC 将被自动填充,你可在备注名称中输入易于识别的别名;

第三步:完成 VPC 绑定后,你在 StarRocks 集群中即可通过 Catalog 访问地址显示的 URI 连接串,连接到 DLC 元数据服务,如:

注意:URI 连接串示例:

注意:Catalog 访问地址: thrift://172.17.1.18:7004。

到此,你的 EMR StarRocks 集群已经可直接分析 DLC 内部托管数据。在开始分析前,你还需要在 StarRocks 中创建 DLC External Catalog。

五、创建 DLC External Catalog

登录 StarRocks 并在 StarRocks 中创建 DLC Catalog。关于 External Catalog 详情请参见 CREATE EXTERNAL CATALOG | Overview。

六、语法

CREATE EXTERNAL CATALOG dlc_iceberg_cos_catalog
PROPERTIES
(
"type" = "iceberg",
"iceberg.catalog.type" = "hive",
"iceberg.catalog.hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "腾讯云secret id",
"aws.s3.secret_key" = "腾讯云secret_key"
);

七、参数说明

参数 说明
type 数据源的类型,默认设置为 Iceberg。
iceberg.catalog.type Iceberg 集群所使用的元数据服务的类型。设置为 hive。
iceberg.catalog.hive.metastore.uris DLC 元数据的 URI。
aws.s3.endpoint 用于访问兼容 S3 协议的对象存储的 Endpoint。腾讯云 COS 的格式为cos.<region>.myqcloud.com,<region>可选值为ap-beijing,ap-shanghai,ap-guangzhou 等。
aws.s3.access_key 腾讯云账号密钥中的 SecretID。
aws.s3.secret_key 腾讯云账号密钥中的 SecretKey。

注意:1. 出于安全性考虑,在上述 SecretID 及 SecretKey 配置中,你需要使用主账号的 SecretID 及 SecretKey 才能正确访问 DLC 内部存储。具体可通过主账号登录腾讯云后,在访问管理控制台 >登录 – 腾讯云页面获取 SecretID 和 SecretKey。

注意:2. 如果你需要使用子账号的 SecretID 及 SecretKey 访问 DLC 内部托管存储,可参考这篇档最后一部分使用子账号 SecretID/SecretKey 访问。

八、示例

以下示例演示创建一个名为 DLC_catalog 的 DLC Catalog:

CREATE EXTERNAL CATALOG dlc_hive_cos_catalog
PROPERTIES
(
"type" = "Iceberg",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "**********",
"aws.s3.secret_key" = "**********")

你如果需要通过 StarRocks 直接查询 DLC 托管存储中的 Hive 表,则你需要创建另一个 DLC Hive catalog,具体将 type 设置为 hive,示例如下:

CREATE EXTERNAL CATALOG dlc_hive_cos_catalog
PROPERTIES
(
"type" = "hive",
"iceberg.catalog.type" = "hive",
"hive.metastore.uris" = "thrift://169.254.0.171:8007",
"aws.s3.endpoint" = "cos.ap-chongqing.myqcloud.com",
"aws.s3.access_key" = "**********",
"aws.s3.secret_key" = "**********"
)

九、DLC 准备表和数据

创建 Iceberg 表的示例如下:

CREATE TABLE test_sr_ofs.`customer`(
`c_custkey` bigint,
`c_name` string,
`c_address` string,
`c_nationkey` int,
`c_phone` string,
`c_acctbal` double,
`c_mktsegment` string,
`c_comment` string) using iceberg;)

StarRocks 中查询数据:

#登录StarRocks节点
mysql -h 172.30.0.xxx -P9030 -u root -p
#指定iceberg catalog
set catalog dlc_iceberg_cos_catalog;
#指定数据库
use test_sr_ofs;
#查询customer表数据
select * from customer limit 5;

查询结果如下:

十、使用子账号 SecretID/SecretKey 访问(可选)

由于数据安全考虑,开启 DLC 外部访问后默认需要使用主账号 SecretID 及 SecretKey 在 EMR StarRocks 发起对 DLC 内部存储的访问。如因业务场景确需使用子账号 SecretID 及 SecretKey 访问,需要你使用主账号在 CAM 完成自定义策略创建并绑定到对应子账号。

十一、原理

在你按照这篇档上述指引开启 DLC 外部访问后,实质上系统授权了你的主账号具备访问 DLC 内部托管存储的权限。但出于数据安全考虑,你主账号名下其他子账号默认不具备此访问权限,需要你在腾讯云访问控制 CAM 中创建授权子账号具备访问能力的自定义策略,并绑定到需要访问 DLC 内部托管存储的子账号。具体步骤如下:

十二、第一步:生成自定义策略

使用主账号登录腾讯云,进入 数据湖计算 DLC 控制台,单击存储配置菜单,选择开启外部访问,在子账号授权中,单击“点击处理”。在弹出对话框点击复制,获得你需要创建的自定义 CAM 策略。

十三、第二步:创建允许子账号访问 DLC 内部存储的自定义策略

1. 使用主账号登录访问管理 CAM 控制台的 策略 页面。

2. 选择新建自定义策略 > 按策略语法创建,随后选择空白模板,单击下一步。

注意:说明:

注意:主账号给子账号授权数据访问权限,目前只能通过自定义策略授权,不支持通过预设策略授权。

3. 填写如下表单:

·策略名称:自行定义一个不重复且有意义的策略名称,例如 cos-child-account。

·备注:可选,自行编写。

·策略内容:粘贴第一步复制的自定义策略,例如:

{
"statement": [
{
"action": [
"cos:*"
],
"effect": "allow",
"resource": [
"qcs::cos:ap-shanghai:uid/1305424723:dlc03ff-100018379117-1647867281-100017307912-1304028854/*",
"qcs::cos:ap-shanghai:uid/1305424723:dlc0a65-100018379117-1680005779-100017307912-1304028854/*"
]
}
],
"version": "2.0"
}

注意:说明:

注意:以上策略表示将主账号有权操作的 DLC 托管存储均授权给子账号 。其中,uid/1305424723 中的1305424723为主账号 A 的 APPID,dlc0a65-100018379117-1680005779-100017307912-1304028854/*为你有权操作的 DLC 内部托管存储。

4. 单击完成,完成策略的创建。

十四、第三步:授权需要访问 DLC 内部存储的子账号

1. 在策略列表中找到刚才已创建的策略,并单击右侧的关联用户/组/角色。

2. 在弹窗中,勾选需要具备访问 DLC 内部托管存储权限的子账号,单击确定。

3. 完成授权操作,即可使用子账号的 SecretID 及 SecretKey,访问你名下 DLC 内部托管存储。

赞 (0)
上一篇 5天前
下一篇 5天前