在特定包中生成 AVRO 类
Generating AVRO classes in specific package
我有两个具有匹配命名空间和字段名称的 .avsc 文件。生成时,从第一个模式生成的 类 被第二个模式的 类 覆盖。有没有办法在特定目录中生成 类,但仅针对其中一个 .avsc 文件?
如果我更改 avro 模式中的名称空间,一切都很好,但 Kafka 消息未被读取,我收到以下错误:
Could not find class com.package.TestClaim
很明显,因为avro改后的命名空间是com.package.test_claim.TestClaim
这是我将 *.test_claim 添加到其中一个模式的命名空间时生成的内容。
in a specific directory, but only for one of the .avsc files?
这就是命名空间的作用。这在其他地方不可覆盖,所以是的,如果单独编译,两个文件会发生冲突。
不清楚您是如何编译 Java 类,但是如果您使用 Avro IDL 而不是 AVSC,您可以 declare/combine 单个命名空间下的许多记录类型protocol
(这会将 类 写入单个文件夹)
如果您需要 different/nested 包装,我们也可以提供
@namespace("org.apache.avro.firstNamespace")
protocol MyProto {
@namespace("org.apache.avro.someOtherNamespace")
record Foo {}
我有两个具有匹配命名空间和字段名称的 .avsc 文件。生成时,从第一个模式生成的 类 被第二个模式的 类 覆盖。有没有办法在特定目录中生成 类,但仅针对其中一个 .avsc 文件?
如果我更改 avro 模式中的名称空间,一切都很好,但 Kafka 消息未被读取,我收到以下错误:
Could not find class com.package.TestClaim
很明显,因为avro改后的命名空间是com.package.test_claim.TestClaim
这是我将 *.test_claim 添加到其中一个模式的命名空间时生成的内容。
in a specific directory, but only for one of the .avsc files?
这就是命名空间的作用。这在其他地方不可覆盖,所以是的,如果单独编译,两个文件会发生冲突。
不清楚您是如何编译 Java 类,但是如果您使用 Avro IDL 而不是 AVSC,您可以 declare/combine 单个命名空间下的许多记录类型protocol
(这会将 类 写入单个文件夹)
如果您需要 different/nested 包装,我们也可以提供
@namespace("org.apache.avro.firstNamespace")
protocol MyProto {
@namespace("org.apache.avro.someOtherNamespace")
record Foo {}