这篇文章概述了如何在 Microsoft Fabric 中的数据工厂流水线中配置 Parquet 格式。
支持的功能
以下活动和连接器支持使用 Parquet 格式作为源和目标。
复制活动中的 Parquet 格式
若要配置 Parquet 格式,请在管道复制活动的源或目标中选择连接,然后在文件格式的下拉列表中选择 Parquet。 选择“设置”以进一步配置此格式。
Parquet 格式作为源
在“文件格式”部分选择“设置”后,弹出的“文件格式设置”对话框中将显示以下属性。
- 压缩类型:在下拉列表中选择用于读取 Parquet 文件的压缩编解码器。 可以从“无”、“gzip (.gz)”、“snappy”、“lzo”、“Brotli (.br)”、“Zstandard”、“lz4”、“lz4frame”、“bzip2 (.bz2)”或“lz4hadoop”中选择。
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 |