你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Avrotize 工具

Avrotize 是一种通用的工具,用于转换数据和数据库架构格式,以及以各种编程语言生成代码。 该工具支持将 Kusto 表架构转换为 Apache Avro 格式,反之亦然,将 Kusto 表定义转换为 Avrotize Schema 命令。 该工具通过以下方式处理 Kusto 表中的动态列:

  • 通过采样推断架构
  • 在任何嵌套级别解析数组和记录
  • 检测冲突的架构
  • 为每个不同的架构分支创建类型联合

注意

Avrotize k2a 工具是在没有产品支持的情况下提供的开源工具 as-is。

将表定义转换为 AVRO 格式

可以使用 avrotize k2a 命令连接到 Kusto 数据库,并创建一个 Avro 架构,其中包含数据库中每个表的记录类型。

下面是如何使用命令的示例:

  • 创建具有顶级联合的 Avro 架构,其中包含每个表的记录:

    avrotize k2a --kusto-uri <Uri> --kusto-database <DatabaseName> --avsc <AvroFilename.avsc>
    
  • 使用 CloudEvent 包装器和每个事件架构创建 XRegistry 目录文件:

    在以下示例中,将为每个表创建具有架构的 xRegistry 目录文件。 如果输入表包含由 ID类型等列标识的 CloudEvent,该工具将为每个事件类型创建单独的架构。

    avrotize k2a --kusto-uri <URI> --kusto-database <DatabaseName> --avsc <AvroFilename.xreg.json> --emit-cloudevents-xregistry --avro-namespace <AvroNamespace>
    

将 AVRO 架构转换为 Kusto 表声明

可以使用 avrotize a2k 命令从 Avro 架构和 JSON 映射创建 KQL 表声明。 它还可以在从 Avro 记录类型中的“doc”批注中提取的表声明中包括 docstring。

如果 Avro 架构是单个记录类型,则输出脚本包含记录的 .create table 命令。 记录字段将转换为表中的列。 如果 Avro 架构是类型联合(顶级数组),输出脚本将为联合中的每个记录类型发出单独的 .create table 命令。

avrotize a2k  .\<AvroFilename.avsc> --out <KustoFilename.kql>

Avrotize 工具能够将 JSON 架构、XML 架构、ASN.1 架构和 Protobuf 2 和 Protobuf 3 架构转换为 Avro 架构。 可以先将源架构转换为 Avro 架构,使其规范化,然后将其转换为 Kusto 架构。

例如,若要将“address.json”转换为 Avro 架构,以下命令首先将输入 JSON 架构文档“address.json”转换为规范化:

avrotize j2a address.json --out address.avsc

然后将 Avro 架构文件转换为 Kusto 架构:

avrotize a2k address.avsc --out address.kql

还可以将命令链接在一起,通过 Avro 从 JSON 架构转换为 Kusto 架构:

avrotize j2a address.json | avrotize a2k --out address.kql