Azure 数据工厂和 Synapse Analytics 中的 Avro 格式

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

若要分析 Avro 文件或将数据写入 Avro 格式,请按照本文的说明操作。

以下连接器支持 Avro 格式:Amazon S3Amazon S3 兼容存储Azure BlobAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2Azure 文件存储文件系统FTPGoogle 云存储HDFSHTTPOracle 云存储SFTP

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供 Avro 数据集支持的属性列表。

属性 描述 必需
type 数据集的 type 属性必须设置为 Avro
___location 文件的位置设置。 每个基于文件的连接器在 ___location 下都有其自己的位置类型和支持的属性。 请在连接器文章 -> 数据集属性部分中查看详细信息。
avroCompressionCodec 写入到 Avro 文件时要使用的压缩编解码器。 当从 Avro 文件进行读取时,该服务会基于文件元数据自动确定压缩编解码器。
支持的类型为“none” (默认值)、“deflate” 、“snappy” 。 请注意,当前复制活动在读取/写入 Avro 文件时不支持 Snappy。

注意

Avro 文件不支持列名称中包含空格。

下面是 Azure Blob 存储上的 Avro 数据集的示例:

{
    "name": "AvroDataset",
    "properties": {
        "type": "Avro",
        "linkedServiceName": {
            "referenceName": "<Azure Blob Storage linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "___location": {
                "type": "AzureBlobStorageLocation",
                "container": "containername",
                "folderPath": "folder/subfolder",
            },
            "avroCompressionCodec": "snappy"
        }
    }
}

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 Avro 源和接收器支持的属性列表。

Avro 作为源

复制活动的 *source* 部分支持以下属性。

属性 描述 必需
type 复制活动源的 type 属性必须设置为 AvroSource
storeSettings 有关如何从数据存储读取数据的一组属性。 每个基于文件的连接器在 storeSettings 下都有其自己支持的读取设置。 请在连接器文章 -> 复制活动属性部分中查看详细信息。

Avro 作为接收器

复制活动的 *sink* 部分支持以下属性。

属性 描述 必需
type 复制活动源的 type 属性必须设置为 AvroSink
formatSettings 一组属性。 请参阅下面的“Avro 写入设置”表。
storeSettings 有关如何将数据写入到数据存储的一组属性。 每个基于文件的连接器在 storeSettings 下都有其自身支持的写入设置。 请在连接器文章 -> 复制活动属性部分中查看详细信息。

formatSettings 下支持的“Avro 写入设置”:

属性 描述 必需
type formatSettings 的类型必须设置为 AvroWriteSettings。
maxRowsPerFile 在将数据写入到文件夹时,可选择写入多个文件,并指定每个文件的最大行数。
fileNamePrefix 配置 maxRowsPerFile 时适用。
在将数据写入多个文件时,指定文件名前缀,生成的模式为 <fileNamePrefix>_00000.<fileExtension>。 如果未指定,将自动生成文件名前缀。 如果源是基于文件的存储或已启用分区选项的数据存储,则此属性不适用。

映射数据流属性

在映射数据流中,可以在以下数据存储中读取和写入 avro 格式:Azure Blob 存储Azure Data Lake Storage Gen1Azure Data Lake Storage Gen2SFTP,并且可以在 Amazon S3 中读取 avro 格式。

源属性

下表列出了 avro 源支持的属性。 可以在“源选项”选项卡中编辑这些属性。

名称 说明 必需 允许的值 数据流脚本属性
通配符路径 将处理与通配符路径匹配的所有文件。 重写数据集中设置的文件夹和文件路径。 String[] wildcardPaths
分区根路径 对于已分区的文件数据,可以输入分区根路径,以便将已分区的文件夹读取为列 字符串 partitionRootPath
文件列表 源是否指向某个列出待处理文件的文本文件 truefalse fileList
用于存储文件名的列 使用源文件名称和路径创建新列 字符串 rowUrlColumn
完成后 在处理后删除或移动文件。 文件路径从容器根开始 删除:truefalse
Move:['<from>', '<to>']
purgeFiles
moveFiles
按上次修改时间筛选 选择根据上次更改时间筛选文件 时间戳 modifiedAfter
modifiedBefore
允许找不到文件 如果为 true,则找不到文件时不会引发错误 truefalse ignoreNoFilesFound

接收器属性

下表列出了 avro 接收器支持的属性。 你可以在“设置”选项卡中编辑这些属性。

名称 说明 必需 允许的值 数据流脚本属性
清除文件夹 如果在写入前目标文件夹已被清除 truefalse truncate
文件名选项 写入的数据的命名格式。 默认情况下,每个分区有一个 part-#####-tid-<guid> 格式的文件 模式:字符串
每分区:String[]
作为列中的数据:字符串
输出到单个文件:['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames
全部引用 将所有值括在引号中 truefalse quoteAll

数据类型支持

复制活动

复制活动不支持 Avro 复杂数据类型(记录、枚举、数组、映射、联合与固定值)。

数据流

处理数据流中的 Avro 文件时,可以读取和写入复杂的数据类型,但请务必先从数据集中清除物理架构。 在数据流中,可以设置逻辑投影并派生作为复杂结构的列,然后将这些字段自动映射到 Avro 文件。