使用 Azure 数据工厂中的复制数据工具导入事件中心存档生成的 Avro 文件时出错

Sha*_*ane 2 azure avro azure-eventhub azure-data-factory azure-blob-storage

我在“文件格式设置”步骤中的Azure 数据工厂“复制数据”工具(当前处于预览版)中看到以下错误:

处理请求时出错:列:SystemProperties,位置:源,格式:Avro,Avro 格式目前不支持数据类型“System.Collections.Generic.Dictionary`2[System.String,System.Object]”。活动 ID:0aa778ad-b496-46c1-8de4-97b4f4169be2

源文件采用 Avro 格式,由Azure Event Hubs Archive生成。当我选择 Avro 格式并选择 blob 中的任何 avro 文件时,当该工具尝试确定架构时,我会收到上述错误。我不知道这是复制数据工具的问题还是事件中心存档输出的文件格式的问题。

有没有人遇到过这个问题或关于我如何进一步调查的任何想法?

Pet*_*Pan 5

根据Exploring the archive and working with Avro官方文档的部分,Azure Event Hubs Archive事件中心存档的 Avro 文件架构如下所示是一个名为records.

{
    "type":"record",
    "name":"EventData",
    "namespace":"Microsoft.ServiceBus.Messaging",
    "fields":[
                 {"name":"SequenceNumber","type":"long"},
                 {"name":"Offset","type":"string"},
                 {"name":"EnqueuedTimeUtc","type":"string"},
                 {"name":"SystemProperties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Properties","type":{"type":"map","values":["long","double","string","bytes"]}},
                 {"name":"Body","type":["null","bytes"]}
             ]
}
Run Code Online (Sandbox Code Playgroud)

但是recordsAzure数据工厂不支持复杂类型的Avro,可以参考Specifying AvroFormat官方文档部分的注释Move data to and from Azure Blob using Azure Data Factory了解。

请注意以下几点:

  • 不支持复杂数据类型(记录、枚举、数组、映射、联合和固定)。

所以你得到了错误信息。如果您只想将 EventHubs 存档从当前存储帐户复制或移动到另一个或其他目标数据存储(如文件系统),您可以选择执行此操作的选项Binary Copy,如下所示。

在此处输入图片说明

或者你想从事件中心传输这些数据,根据我的经验,方法是使用Azure Stream Analytics从事件中心读取数据写入数据存储,如 Blob Storage,然后你可以使用数据工厂复制数据。