查询引擎

Microsoft Fabric

师成师成· 更新于 2026-09-28· 阅读 11 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

本指南提供了一个简短的教程,介绍如何利用 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)进行查询。

前置条件

第 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 存储账户中数据路径的链接。

  1. 导航到你的 Fabric Lakehouse,点击 Tables,然后选择 New Shortcut(新建快捷方式)。

调用新建快捷方式

  1. 在 New Shortcut 对话框中,将 Azure Delta Lake Storaget Gen2 选为 External Source(外部源)。

选择外部源

  1. 在 New Shortcut 对话框中,输入 Connection settings(连接设置),并授权 Fabric 访问该存储账户。

输入连接设置

  1. 在 New Shortcut 对话框中,输入 Shortcut settings(快捷方式设置),然后点击 Create(创建)。

输入快捷方式设置

  1. 快捷方式现已创建,该表即可在 Fabric 中进行查询。

快捷方式已创建

脚注

  1. 更新于 2023-11-16

评论

登录后参与评论

正在加载评论…