我正在使用thrift方案将thrift包作为桶文件存储在hadoop集群中。一切似乎都正常。正在创建节俭包,没有任何错误。
虽然,我使用kafka发送包,序列化时,serializer函数将包转换为字节数组。为什么Kafka要查看bundle对象以将其转换为字节数组。或者有什么方法可以让我安全地将任何对象转换为字节数组。如果有,请提供它。错误是:
java.io.IOException: org.apache.thrift.protocol.TProtocolException: Cannot write a TUnion with no set value!
下面是引发错误的writeobject函数
private void writeObject(java.io.ObjectOutputStream out)
throws java.io.IOException {
try {
write(new org.apache.thrift.protocol.TCompactProtocol(
new org.apache.thrift.transport.TIOStreamTransport(out)));
} catch (org.apache.thrift.TException te) {
throw new java.io.IOException(te);
}
}
1条答案
按热度按时间trnvg8h31#
信息很清楚:有一个地方
union
未设置值的对象。必须为节俭工会设置一个值。节俭联盟示例,请参见*.thrift文件:
这是引发错误的条件:
无法从给定的代码中判断它是什么对象,因为堆栈太深。看看调用
writeObject()
,然后向上走。在代码中的某个地方,某些数据没有按其应有的方式设置,或者该值被设置为null
价值-这是非法的节俭。如果你真的需要一个指标null
在您的用例中,考虑一个额外的布尔标志。