Lakehouse 跨实例数据共享指南(Share)
概述
跨实例数据共享(Data Sharing)允许你将 Lakehouse 中的表或视图安全地共享给其他实例的用户,无需复制数据。通过
CREATE SHARE
CREATE SHARE
和
GRANT
GRANT
命令,你可以精细控制共享范围和权限。本指南按业务场景分类,帮助你快速掌握数据共享的配置方法。
涉及的 SQL 命令
| 命令 | 用途 | 适用场景 |
|---|
CREATE SHARE
CREATE SHARE | 创建共享对象 | 定义数据共享容器 |
GRANT ... TO SHARE
GRANT ... TO SHARE | 授权表/视图到共享 | 配置共享内容 |
ALTER SHARE ... ADD INSTANCE
ALTER SHARE ... ADD INSTANCE | 添加消费实例 | 指定共享目标 |
SHOW SHARES
SHOW SHARES | 查看共享列表 | 监控共享状态 |
DROP SHARE
DROP SHARE | 删除共享 | 清理废弃共享 |
前置准备
以下示例使用模拟的共享表
shared_sales
shared_sales
:
-- 创建测试表
CREATE TABLE IF NOT EXISTS shared_sales (
sale_id INT,
product STRING,
amount DOUBLE,
sale_date DATE
);
-- 插入测试数据
INSERT INTO shared_sales VALUES
(1, 'Phone', 5000, '2024-06-01'),
(2, 'Laptop', 8000, '2024-06-02');
创建数据共享
使用
CREATE SHARE
CREATE SHARE
定义一个共享对象,作为数据共享的容器。
-- 创建共享
CREATE SHARE sales_share;
💡 提示:共享创建后默认为空,需通过
GRANT
GRANT
添加表或视图。
授权共享表
使用
GRANT
GRANT
命令将表或视图的读取权限授予共享对象。
-- 授予共享表读取权限
GRANT SELECT ON TABLE shared_sales TO SHARE sales_share;
支持的权限:
SELECT
SELECT
:允许消费实例查询表数据。
READ METADATA
READ METADATA
:允许消费实例查看表结构(Schema)。
添加消费实例
使用
ALTER SHARE
ALTER SHARE
将目标 Lakehouse 实例添加到共享中,使其能够访问共享数据。
-- 添加消费实例(需替换为实际实例 ID)
ALTER SHARE sales_share ADD INSTANCE 'consumer_instance_id';
⚠️ 注意:消费实例需在同一个云器平台账户体系下,或已配置跨账户共享策略。
查看共享信息
使用
SHOW SHARES
SHOW SHARES
查看当前实例的所有共享配置。
-- 查看共享列表
SHOW SHARES;
-- 查看共享详情
DESC SHARE sales_share;
返回信息:
share_name
share_name
:共享名称
kind
kind
:共享类型(OUTBOUND / INBOUND)
objects
objects
:已共享的表/视图列表
撤销共享
使用
REVOKE
REVOKE
或
DROP SHARE
DROP SHARE
移除共享权限。
-- 撤销表的共享权限
REVOKE SELECT ON TABLE shared_sales FROM SHARE sales_share;
-- 删除共享
DROP SHARE sales_share;
💡 提示:删除共享不会影响源表数据,仅切断消费实例的访问通道。
清理测试数据
完成共享验证后,建议清理测试表:
-- 删除测试表
DROP TABLE IF EXISTS shared_sales;
DROP SHARE IF EXISTS sales_share;
💡 提示:Lakehouse 支持
UNDROP TABLE
UNDROP TABLE
,误删后可在保留期内恢复。
注意事项
- 只读共享:共享仅支持
SELECT
SELECT
权限,消费实例无法修改源表数据。
- 实时性:消费实例查询共享表时,直接读取源实例的最新数据,无同步延迟。
- 网络策略:跨云或跨地域共享需确保网络策略(如 PrivateLink)已正确配置。
- 权限继承:共享表上的行级权限或动态脱敏策略会同步生效到消费实例。
- 计费:共享查询产生的计算资源消耗由消费实例承担,存储成本由提供方承担。
相关文档