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 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;


注意事项

  1. 只读共享:共享仅支持
    SELECT
    SELECT
    权限,消费实例无法修改源表数据。
  2. 实时性:消费实例查询共享表时,直接读取源实例的最新数据,无同步延迟。
  3. 网络策略:跨云或跨地域共享需确保网络策略(如 PrivateLink)已正确配置。
  4. 权限继承:共享表上的行级权限或动态脱敏策略会同步生效到消费实例。
  5. 计费:共享查询产生的计算资源消耗由消费实例承担,存储成本由提供方承担。

常见问题

问题原因解决方案
CREATE SHARE 报权限不足需要
instance_admin
instance_admin
角色
联系管理员授予
instance_admin
instance_admin
消费方看不到 Share提供方未执行 ADD INSTANCE提供方执行
ALTER SHARE <share> ADD INSTANCE <consumer_instance>
ALTER SHARE <share> ADD INSTANCE <consumer_instance>
DESC SHARE 报错找不到 Share
instance_name
instance_name
填写有误
通过
SHOW SHARES
SHOW SHARES
确认
provider_instance
provider_instance
字段的准确值
消费方挂载 Schema 后查不到某张表GRANT 时未包含该表提供方重新执行
GRANT SELECT, READ METADATA ON TABLE ... TO SHARE
GRANT SELECT, READ METADATA ON TABLE ... TO SHARE
只想分享部分列或部分行直接分享表会暴露全量数据先创建 VIEW 过滤所需列/行,再将 VIEW 加入 Share

相关文档

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询