将数据镜像到云数据仓库
镜像任务使您能够从 Snowflake 查询存储在 Qlik Open Lakehouse 中的数据。数据反映在 Snowflake 中,没有进行复制。镜像表可确保将存储和工程成本降至最低,并且保持单一真实源。
将数据登录到 Qlik Open Lakehouse 后,您可以使用镜像表将数据镜像到 Snowflake。可以使用本机支持 Iceberg 的查询引擎(如 Amazon Athena)查询 Iceberg 中的数据。不过,当您想实施开放式 Iceberg 湖空间架构,但又想继续使用 Snowflake 作为查询引擎时,镜像表是理想的选择。镜像数据任务通过将 Iceberg 数据表声明成外部数据表,自动化了在 Snowflake 中访问 Iceberg 数据表的过程。Snowflake 将 Iceberg 表称作外部表,因为它并不管理该表,只是从中读取数据。外部数据表允许您在 Snowflake 中查询 Iceberg 数据,而无需将数据或数据表管理器迁移至 Snowflake 中。
要镜像数据,您需要在 Snowflake 中创建一个外部卷,该卷指向 Iceberg 数据表所在的 S3 存储段,并由存储任务进行更新。然后,您创建一个 Snowflake 目录集成,指向 Qlik Open Lakehouse 项目使用的数据目录,例如 AWS Glue Data Catalog。
镜像任务执行必要 DDL 语句,在 Snowflake 中创建外部表。表(模式)与更改表和历史表一起显示在 Snowflake 中,但若查看表定义,则显示为在外部表顶部创建的视图。Snowflake 用户可以查询视图,就像数据存储在他们的 Snowflake 环境中一样。镜像数据可提供高性能,因为 Qlik 会继续管理和优化数据。
刷新机制
Snowflake 指向反映 Iceberg 内可用数据最新快照的元数据。刷新元数据有两种方法:
-
Qlik-托管:此选项需要激活 Snowflake 仓库,并包括监控和数据预览。若要创建下游转换并监控和安排任务,请选择此选项。Qlik 拥有元数据刷新操作,因此可以手动配置,例如每 30 分钟运行一次。该选项尤其适合多表转换,因为所有表的元数据都会同时更新。虽然您可能会失去一些由 Snowflake 管理的刷新所提供的实时收益,但是您可以保持表之间的一致性。对于多表转换,可根据需要随时触发刷新。Qlik 建议您对排定镜像任务后的下游转换任务设定基于事件的触发。
-
Snowflake 管理:利用 Snowpipe 基础设施而不需要或激活计算仓库的无服务器操作。如果不需要下游转换,建议使用该选项。刷新间隔在创建 Snowflake 目录集成之时配置。要监控自动刷新的状态,请在 Snowflake 中查询 SYSTEM$AUTO_REFRESH_STATUS。Qlik 失去流程的所有权,无法监控此等任务。
项目中的每个镜像任务都可配置自己的刷新机制:如果创建两个镜像任务,一个可以使用 Qlik 管理的刷新,另一个可以使用 Snowflake 管理的刷新。
模式演变
若手动添加或删除存储任务中的列或表,或间接添加或删除登陆任务中的列或表,更改会自动反映在镜像任务设计中。您必须准备任务以将更改应用于镜像表。如果在镜像和存储任务设置中启用了模式演进,存储任务中自动检测到的任何模式更改都会应用到镜像表。
先决条件
只有在 Qlik Open Lakehouse 项目中创建了存储任务后,才能添加镜像数据任务。一个存储任务可以有多个镜像数据任务。一个镜像数据任务只能同一个存储任务相关联。
要将数据镜像到 Snowflake,您需要
-
连接至您要镜像数据的 Snowflake 数据库的连接。可选择在创建镜像任务时创建新的连接。相关要求可参阅连接至 Snowflake 的说明。
-
Snowflake 外部卷。这样,Snowflake 就可有限制地访问您的 S3 位置。要配置卷,请参阅为 Amazon S3 配置外部卷。
-
一种 AWS Glue 数据目录集成。这使 Snowflake 能够连接到对象存储中以 Iceberg 开放表格式进行保存的数据。要配置目录集成,请参见为 AWS Glue 配置目录集成。
创建镜像数据任务
要将数据镜像至 Snowflake,请执行以下操作:
-
打开包含要进行镜像的数据的存储任务的投影项目。
-
单击存储任务上的
更多操作。 选择镜像数据并进行配置:
-
名称:输入镜像任务名称。
-
描述:可选择描述任务的目的。
-
连接:
-
要使用现有的连接,请单击选择打开安全源连接对话框。选择连接所在的空间位置,然后再选择连接。单击编辑修改连接属性。
-
要创建新连接,请单击创建连接打开创建连接对话框,并按照说明操作。
-
-
数据库:输入要进行镜像的数据的数据库名称。
-
Snowflake 外部卷:输入在 Snowflake 中所创建的外部卷的名称。
-
Snowflake 目录集成:输入在 Snowflake 中所创建的目录集成名称。
-
选择要在 Snowflake 中使用的数据刷新方式:
-
Qlik 管理:如果要创建下游转换,可选择此选项。这需要激活 Snowflake 仓库,并由 Qlik 监控。
-
Snowflake-管理:当您不想执行下游转换时,请选择此选项。Snowflake 仓库不是必需的,因此不受 Qlik 的监控。这在 Snowflake 中进行管理和监控。
-
创建镜像任务,将其添加到管道中的存储任务。
-
单击镜像任务上的
更多操作并选择打开。确保显示的是设计视图。
-
要选择可用数据集的子集,请单击选择源数据并移除不需要的数据集。
-
单击准备在 Snowflake 中创建外部数据表并镜像数据。
执行转换
如果需要转换数据,可以创建一个 Snowflake 项目,并使用 Qlik Open Lakehouse 项目中的镜像数据任务作为数据源。要使用现有项目中的数据来创建转换任务,请参阅构建跨项目管道。
删除镜像数据任务
删除镜像任务时,外部表格和视图将从 Snowflake 中删除,不再可供查询。当镜像任务正在读取存储任务时,无法删除存储任务。
要删除镜像数据任务,可执行以下操作:
-
在要删除的镜像数据任务上,单击任务上的
更多操作菜单并选择删除。 -
在确认对话框中,单击删除。