Microsoft Fabric 数据工厂中的 Parquet 格式

这篇文章概述了如何在 Microsoft Fabric 中的数据工厂流水线中配置 Parquet 格式。

支持的功能

以下活动和连接器支持使用 Parquet 格式作为源和目标。

类别 连接器/活动
支持的连接器 Amazon S3
Amazon S3 兼容
Azure Blob 存储
Azure Data Lake Storage Gen1
Azure Data Lake Storage Gen2
Azure 文件
文件系统
FTP
Google 云存储
HTTP
Lakehouse 文件
Oracle 云存储
SFTP
支持的活动 复制活动(源/目标)
Lookup 活动
GetMetadata 活动
Delete 活动

复制活动中的 Parquet 格式

若要配置 Parquet 格式,请在管道复制活动的源或目标中选择连接,然后在文件格式的下拉列表中选择 Parquet。 选择“设置”以进一步配置此格式。

屏幕截图显示文件格式设置。

Parquet 格式作为源

在“文件格式”部分选择“设置”后,弹出的“文件格式设置”对话框中将显示以下属性。

屏幕截图显示 parquet 文件格式源。

  • 压缩类型:在下拉列表中选择用于读取 Parquet 文件的压缩编解码器。 可以从“”、“gzip (.gz)”、“snappy”、“lzo”、“Brotli (.br)”、“Zstandard”、“lz4”、“lz4frame”、“bzip2 (.bz2)”或“lz4hadoop”中选择。

Parquet 格式作为目标

选择“设置”后,弹出的“文件格式设置”对话框中将显示以下属性。

屏幕截图显示 parquet 文件格式目标。

  • 压缩类型:在下拉列表中选择用于写入 Parquet 文件的压缩编解码器。 可以从“”、“gzip (.gz)”、“snappy”、“lzo”、“Brotli (.br)”、“Zstandard”、“lz4”、“lz4frame”、“bzip2 (.bz2)”或“lz4hadoop”中选择。

  • 使用 V-Order:启用 parquet 文件格式的写入时间优化。 有关详细信息,请参阅 Delta Lake 表优化和 V-Order。 它默认为启用状态。

在“目标”选项卡中的“高级”设置下,将显示以下 Parquet 格式相关属性。

  • 每个文件的最大行数:在将数据写入到文件夹时,可选择写入多个文件,并指定每个文件的最大行数。 指定要为每个文件写入的最大行数。
  • 文件名前缀:配置“每个文件的最大行数”时适用。 在将数据写入多个文件时,指定文件名前缀,生成的模式为 <fileNamePrefix>_00000.<fileExtension>。 如果未指定,将自动生成文件名前缀。 如果源是基于文件的存储或已启用分区选项的数据存储,则此属性不适用。

映射

对于 映射 选项卡的配置,如果不将 Parquet 格式应用为目标数据存储,请转到 映射

编辑目标数据类型

以 Parquet 格式将数据复制到目标连接器时,除了 映射中的配置外,可以在启用高级 Parquet 类型设置后指定某些目标列类型。 还可以配置 IsNullable 选项以指定每个 Parquet 目标列是否允许 null 值。 IsNullable 的默认值为 true.

以下映射用于将服务内部支持编辑的中间数据类型转换为 Parquet 数据类型。

临时服务数据类型 Parquet 逻辑类型 Parquet 物理类型
DateTime 选项 1:null
选项 2:时间戳
选项 1:INT96 (默认值)
选项 2:INT64(单位:MILLIS、MICROS、NANOS(默认值))
DateTimeOffset 选项 1:null
选项 2:时间戳
选项 1:INT96 (默认值)
选项 2:INT64(单位:MILLIS、MICROS、NANOS(默认值))
TimeSpan TIME INT32 (单位:米利斯)
INT64(单位:MICROS、NANOS(默认))
Decimal 十进制 INT32 (1 <= 精度 <= 9)
INT64 (9 < 精度 <= 18)
FIXED_LEN_BYTE_ARRAY (精度 > 18) (默认值)
GUID 选项 1:字符串
选项 2:UUID
选项 1:BYTE_ARRAY(默认值)
选项 2:固定长度字节数组
字节数组 null BYTE_ARRAY(默认值)或FIXED_LEN_BYTE_ARRAY

例如,源中的 decimalData 列的类型将转换为临时服务类型:Decimal。 根据上面的映射表,目标列的映射类型根据指定的精度自动确定。 如果精度为 9 或更少,则映射到 INT32。 对于高于 9 和最多 18 的精度值,它映射到 INT64。 如果精度超过 18,则映射到FIXED_LEN_BYTE_ARRAY。

映射目标列类型的屏幕截图。

Parquet 的数据类型映射

从 Parquet 格式的源连接器复制数据时,以下映射用于从 Parquet 数据类型到服务内部使用的临时数据类型。

Parquet 逻辑类型 Parquet 物理类型 临时服务数据类型
null BOOLEAN 布尔
INT(8,true) INT32 SByte
INT(8,false) INT32 字节
INT(16,true) INT32 Int16
INT(16, false) INT32 UInt16
INT(32,true) INT32 Int32
INT(32,false) INT32 UInt32
INT(64,true) INT64 Int64
INT(64,false) INT64 UInt64
null FLOAT Single
null Double
十进制 INT32、INT64、FIXED_LEN_BYTE_ARRAY或BYTE_ARRAY Decimal
DATE INT32 日期
TIME INT32 或 INT64 DateTime
TIMESTAMP INT64 DateTime
ENUM BYTE_ARRAY String
UUID FIXED_LEN_BYTE_ARRAY GUID
null BYTE_ARRAY 字节数组
STRING BYTE_ARRAY String

将数据以 Parquet 格式复制到目标连接器时,服务内部使用的临时数据类型到 Parquet 数据类型使用以下映射。

临时服务数据类型 Parquet 逻辑类型 Parquet 物理类型
布尔 null BOOLEAN
SByte INT INT32
字节 INT INT32
Int16 INT INT32
UInt16 INT INT32
Int32 INT INT32
UInt32 INT INT32
Int64 INT INT64
UInt64 INT INT64
Single null FLOAT
Double null
DateTime null INT96
DateTimeOffset null INT96
日期 DATE INT32
TimeSpan TIME INT64
Decimal 十进制 INT32、INT64 或 FIXED_LEN_BYTE_ARRAY
GUID STRING BYTE_ARRAY
String STRING BYTE_ARRAY
字节数组 null BYTE_ARRAY

表摘要

Parquet 作为源

使用 Parquet 格式时,复制活动“”部分支持以下属性。

名称 描述 必选 JSON 脚本属性
文件格式 要使用的文件格式。 Parquet 类型(datasetSettings 下):
Parquet
压缩类型 用来读取 Parquet 文件的压缩编解码器。 从下列项中进行选择:

gzip (.gz)
snappy
lzo
布罗特利 (.br)
Zstandard
lz4
lz4frame
bzip2 (.bz2)
lz4hadoop
compressionCodec:

gzip
snappy
lzo
brotli
zstd
lz4
lz4frame
bz2
lz4hadoop

Parquet 作为目标

使用 Parquet 格式时,复制活动“目标”部分支持以下属性。

名称 描述 必选 JSON 脚本属性
文件格式 要使用的文件格式。 Parquet 类型(datasetSettings 下):
Parquet
使用 V-Order parquet 文件格式的写入时间优化。 已选择或未选择 enableVertiParquet
压缩类型 用来写入 Parquet 文件的压缩编解码器。 从下列项中进行选择:

gzip (.gz)
snappy
lzo
布罗特利 (.br)
Zstandard
lz4
lz4frame
bzip2 (.bz2)
lz4hadoop
compressionCodec:

gzip
snappy
lzo
brotli
zstd
lz4
lz4frame
bz2
lz4hadoop
每个文件的最大行数 在将数据写入到文件夹时,可选择写入多个文件,并指定每个文件的最大行数。 指定要为每个文件写入的最大行数。 <每个文件的最大行数> maxRowsPerFile
文件名前缀 配置“每个文件的最大行数”时适用。 在将数据写入多个文件时,指定文件名前缀,生成的模式为 <fileNamePrefix>_00000.<fileExtension>。 如果未指定,将自动生成文件名前缀。 如果源是基于文件的存储或已启用分区选项的数据存储,则此属性不适用。 <文件名前缀> fileNamePrefix