gpt4 book ai didi

java - 如何使用 Avro 生成 String 类型的字段而不是 CharSequence?

转载 作者:太空狗 更新时间:2023-10-29 22:49:17 38 4
gpt4 key购买 nike

我写了一个 Avro 模式,其中一些字段 ** 需要是 ** 类型 String但 Avro 生成了 CharSequence 类型的那些字段.

我找不到任何方法告诉 Avro 将这些字段设为 String .

我试过

"fields": [
{
"name":"startTime",
"type":"string",
"avro.java.stringImpl":"String"
},
{
"name":"endTime",
"type":"string",
"avro.java.string":"String"
}
]

但对于这两个字段,Avro 正在生成 CharSequence 类型的字段.

有没有其他方法可以使这些字段类型为 String

最佳答案

如果您希望所有字符串字段都是 java.lang.String 的实例,那么您只需配置编译器:

java -jar /path/to/avro-tools-1.7.7.jar compile -string schema 

或者如果你使用的是 Maven 插件

<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.7.7</version>
<configuration>
<stringType>String</stringType>
</configuration>
[...]
</plugin>

如果您希望某个特定字段是 java.lang.String 类型,那么...您不能。编译器不支持它。您可以将“java-class”与 reflect API 一起使用,但编译器不关心。

如果想了解更多,可以在SpecificCompiler line 372, Avro 1.7.7中设置断点。您可以看到,在调用 addStringType() 之前,架构在 props 字段中具有所需的信息。如果您将此架构传递给 SpecificCompiler.javaType(),那么它将执行您想要的操作。但是随后 addStringType 将您的模式替换为静态模式。我很可能会在邮件列表中提出问题,因为我不明白这一点。

关于java - 如何使用 Avro 生成 String 类型的字段而不是 CharSequence?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118727/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com