dor*_*van 2 avro deserialization apache-kafka confluent
当我要发送包含字段类型为long的AVRO消息时,出现以下错误:
Caused by: org.apache.kafka.common.errors.SerializationException: Error deserializing Avro message for id 61
Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to org.joda.time.DateTime
Run Code Online (Sandbox Code Playgroud)
我使用Confluent 3.2.0和Apache Spark 2.2.0。在Spark Job中抛出此错误,该Spark Job处理AVRO消息并将其打印在控制台中。在AVRO模式中,相应的字段定义如下:
{\"name\": \"event_time\", \"type\": { \"type\" : \"long\", \"logicalType\": \"timestamp-millis\"}}
Run Code Online (Sandbox Code Playgroud)
在从.avsc
文件生成的Java类中,该字段的定义如下:
private DateTime event_time;
Run Code Online (Sandbox Code Playgroud)
小智 6
我在使用Confluent 4.0.0和Avro 1.8.2时遇到了类似的问题。我有一个流处理器试图将long转换为DateTime。我通过添加正确的转换解决了这个问题。在开始任何处理逻辑之前,我使用了“ 专用数据”静态实用程序类并添加了正确的逻辑类型转换。
SpecificData.get().addLogicalTypeConversion(new TimeConversions.TimestampConversion());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1517 次 |
最近记录: |