Microsoft Fabric
本指南提供了一个简短的教程,介绍如何利用 Apache XTable™ (Incubating) 的转换能力在 Microsoft Fabric 中查询 Apache Iceberg 和 Apache Hudi 表。本教程仅用于演示,并验证 Apache XTable™ (Incubating) 的输出与 Fabric 的兼容性。教程利用了 Fabric 当前1可用的功能,例如 Shortcuts。
什么是 Microsoft Fabric
Microsoft Fabric 是一个用于数据分析的统一数据分析平台。它提供了广泛的能力,包括数据工程、数据科学、实时分析和商业智能。其核心是数据湖 OneLake,它以 Delta Parquet 格式提供表格数据存储,使得同一份数据可以被 Fabric 中的所有分析服务(如 T-SQL、Spark 和 Power BI)使用。OneLake 旨在消除数据重复的需要,并免除数据迁移或传输的必要性。无论是使用 Spark 向表中添加数据的数据工程师,还是在数据仓库中使用 T-SQL 分析数据的 SQL 开发人员,两者都可以访问并处理存储在 OneLake 中的同一份数据副本。此外,OneLake 通过其“Shortcut”功能支持集成现有的存储账户,该功能充当指向其他文件系统中数据的链接。
教程
以下教程的目标是使用 Apache XTable™ (Incubating) 将 ADLS 存储账户中的 Iceberg 或 Hudi 表转换为 Delta Lake 格式。转换完成后,该表将可通过各种 Fabric 引擎(包括 T-SQL、Spark 和 Power BI)进行查询。
前置条件
- 一个可用的 Microsoft Fabric 工作区。
- 一个在 Azure Data Lake Storage Gen2 (ADLS) 中包含容器的存储账户。
第 1 步:在 ADLS 中创建源表
此步骤在 ADLS 存储账户中创建一个 Iceberg 或 Hudi 格式的源表。在 Iceberg 或 Hudi 格式下创建 people 表所需的主要操作记录在创建你的第一张可互操作表 - 创建数据集教程章节中。但是,不要在本地创建 people 表,而是将 local_base_path 配置为指向 ADLS 存储账户。
假设容器名称为 mycontainer,存储账户名称为 mystorageaccount,则 local_base_path 应设置为 abfs://mycontainer@mystorageaccount.dfs.core.windows.net/。
用于向 ADLS 存储账户进行身份验证的 Spark 配置示例如下:
spark.hadoop.fs.azure.account.auth.type=OAuth
spark.hadoop.fs.azure.account.oauth.provider.type=org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
spark.hadoop.fs.azure.account.oauth2.client.endpoint=https://login.microsoftonline.com/<tenant-id>/oauth2/token
spark.hadoop.fs.azure.account.oauth2.client.id=<client-id>
spark.hadoop.fs.azure.account.oauth2.client.secret=<client-secret>第 2 步。使用 Apache XTable™ (Incubating)™ 将源表转换为 Delta Lake 格式
本步骤使用 Apache XTable™ (Incubating) 将原本为 Iceberg 或 Hudi 格式的 people 表转换为 Delta Lake 格式。转换的主要操作记录在 创建你的第一张互操作表 - 运行 Sync 教程章节中。不过,由于该表位于 ADLS 中,你需要更新数据集路径和 Hadoop 配置。
例如,如果源表是 Iceberg 格式,配置文件应如下所示:
my_config.yaml
sourceFormat: ICEBERG
targetFormats:
- DELTA
datasets:
-
tableBasePath: abfs://mycontainer@mystorageaccount.dfs.core.windows.net/default/people
tableDataPath: abfs://mycontainer@mystorageaccount.dfs.core.windows.net/default/people/data
tableName: people
# In the configuration above `default` refers to the default spark database.用于向 ADLS 存储帐户进行身份验证的 Hadoop 配置示例如下:
hadoop.xml
<configuration>
<property>
<name>fs.azure.account.auth.type</name>
<value>OAuth</value>
</property>
<property>
<name>fs.azure.account.oauth.provider.type</name>
<value>org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider</value>
</property>
<property>
<name>fs.azure.account.oauth2.client.endpoint</name>
<value>https://login.microsoftonline.com/[tenant-id]/oauth2/token</value>
</property>
<property>
<name>fs.azure.account.oauth2.client.id</name>
<value>[client-id]</value>
</property>
<property>
<name>fs.azure.account.oauth2.client.secret</name>
<value>[client-secret]</value>
</property>
</configuration>shell
java -jar xtable-utilities/target/xtable-utilities_2.12-0.5.0-SNAPSHOT-bundled.jar --datasetConfig my_config.yaml --hadoopConfig hadoop.xml运行上述命令会将 Iceberg 或 Hudi 格式的 people 表转换为 Delta Lake 格式。要验证转换结果,可以列出表数据路径下的目录。对于本教程,_delta_log 目录应位于 people 表的数据路径 default/people/data/_delta_log 中。
第 3 步:在 Fabric 中创建快捷方式并进行分析
此步骤会在 Fabric 中为上一步创建的 Delta Lake 表创建一个快捷方式。该快捷方式是指向该表在 ADLS 存储账户中数据路径的链接。
- 导航到你的 Fabric Lakehouse,点击
Tables,然后选择New Shortcut(新建快捷方式)。
- 在
New Shortcut对话框中,将Azure Delta Lake Storaget Gen2选为External Source(外部源)。
- 在
New Shortcut对话框中,输入Connection settings(连接设置),并授权 Fabric 访问该存储账户。
- 在
New Shortcut对话框中,输入Shortcut settings(快捷方式设置),然后点击Create(创建)。
- 快捷方式现已创建,该表即可在 Fabric 中进行查询。
脚注
- 更新于 2023-11-16
评论
登录后参与评论
KnowForge



