首页 文章

kafka connect avro enums 解析为字符串

提问于
浏览
0

我正在使用来自汇编的 kafka connect 框架来生成从我的应用程序服务器到 kafka 集群的消息(用于 avro 支持的 zookeeper 代理模式注册表)。

我通过 connect 发送的数据由 avro 架构定义。我的架构表示包含 ENUMS 的结构化对象。事实上,Apache avro 支持支持枚举类型。我不必将我的架构提交到注册表,因为 kafka connect API 会自动执行。

我的问题是 kafka connect 似乎将 ENUMS 解析为 String。当我尝试使用时,我发现连接提交的模式不正确,因为它已将所有 ENUMS 转换为 String。因此,我不能使用我的数据来实现从 String 到 ENUMS 的转换逻辑。

我想将我的逻辑信息保存为 ENUM 并使用 kafka connect。我跳进了 kafka-connect 代码,似乎没有处理枚举类型,只有基本类型。

我当前的替代选择是建立我自己的生产框架,通过模仿连接框架来保持 ENUMS,但这是耗时的,我不能避免使用 ENUMS。

您是否设法使用 kafka-connect 生成和使用包含 ENUMS 的记录到 kafka?

任何帮助或经验反馈都很热烈,谢谢!

1 回答

  • 0

    在最新版本的 Connect(可能是 4.2)中,有这些属性。 (我个人没有在文档中看到,但我能够在源代码中找到它们,因为我也发现了和你一样的东西)

    正如您所看到的,默认值为 false,我在新版本中被告知,它将被设置为 true

    public static final String ENHANCED_AVRO_SCHEMA_SUPPORT_CONFIG = "enhanced.avro.schema.support";
    public static final boolean ENHANCED_AVRO_SCHEMA_SUPPORT_DEFAULT = false;
    public static final String ENHANCED_AVRO_SCHEMA_SUPPORT_DOC =
      "Enable enhanced avro schema support in AvroConverter: Enum symbol preservation and Package"
          + " Name awareness";
    

    至于现在,您需要在工作者/连接器级别设置这些以保留枚举,假设您正在运行具有这些的 Connect 版本

相关问题