【问题标题】:Using AvroSchemaRegistry in Apache NiFi在 Apache NiFi 中使用 AvroSchemaRegistry
【发布时间】:2021-02-25 11:05:15
【问题描述】:

我有 5 个不同的 CSVReader 控制器服务。除了schema text(因为不同的header)和1个CSVRecordSetWriter之外,它们的配置是一样的。

我只想留下一个CSVReader 并动态设置schema text。我读到了AvroSchemaRegistry,但我并不清楚如何使用它。

我是否应该创建 5 个不同的 AvroSchemaRegistry 控制器,具有 2 个属性:namevalue? F.e.我想输入以下架构:

{
    "type": "record",
    "name": "campaigns",
    "namespace": "common",
    "fields": [
        {"name": "campaign_name", "type": "string"},
        {"name": "campaign_id", "type": "long"},
        {"name": "date", "type" : {"type": "int", "logicalType" : "date"}}
    ]
}

我应该创建AvroSchemaRegistry

  • name = 广告系列;
  • value = 上面的完整代码

对于另一个架构,我应该创建另一个具有另一个属性 namevalueAvroSchemaResgitry 控制器?

之后,如何配置CSVReaderCSVRecordSetWriter 以使用这些模式?最后,我应该如何处理流文件?添加其他属性?什么样的?

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    像这样配置您的流程(根据您的要求进行更改),

    1. UpdateAttribute 用于派生/硬编码流文件特定架构的配置-

    1. ValidateRecord 配置使用通用 csv 阅读器并动态传递架构 -

    1. CSVReader 控制器服务使用动态传递的模式并设置模式访问策略-

    如果您希望使用 NiFi 支持的架构注册表,则将所有架构放入注册表并设置 schema.nameaccess strategy 属性以供记录读取器/写入器从注册表访问架构,但首先您需要添加/配置架构控制器服务中的注册表提供程序。

    更新:

    HortonworksSchemaRegistry 的示例 SchemaRegistry 控制器服务配置(ConfluentSchemaRegistry 和 AvroSchemaRegistry 具有或多或少相同的属性)。重要的是执行查找操作时注册表 API 期望的参数,因此我们只需要从 Reader/Writer 控制器服务Schema Name 属性传递相同的值,请refer to this 了解一下。

    架构注册表网址:http://example.com:7788/api/v1

    【讨论】:

    • 我试试看!您能否也为控制器服务中的模式注册表提供简单的配置?我不知道它应该是什么样子。
    • 你能给我们提供一个模式注册表配置的例子吗?
    • @FahdZaghdoudi - 更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    相关资源
    最近更新 更多