AvroCoder.isDeterministic返回false。
为什么AvroCoder不是确定性的? Avro记录是否总是被编码到相同的字节流中?
由于Avro Coder不具有确定性,因此Avro记录不能用作按操作分组的密钥。将Avro记录转换为密钥的最佳方法是什么?我们应该只使用Avro记录的json表示吗?
答案 0 :(得分:2)
基于Avro specification,看起来只有阵列和地图具有非确定性二进制编码。
由于两个原因,地图看起来像是非确定性编码
阵列看起来像是非确定性编码的,因为
因此,对于没有数组或映射的任何模式,我认为二进制编码应该是确定性的。所以我认为我们可以通过继承AvroCoder并覆盖AvroCoder.isDeterministic来返回true来创建一个确定性编码器。
AvroDeterministicCoder是我创建这样一个程序员的第一次尝试。
答案 1 :(得分:1)
AvroCoder
可以检查正在编码的模式和类型,并确定它何时是确定性的。它已添加到GitHub提交#a806df。
当底层集合具有确定性顺序时,它包括对确定性地编码数组和映射的支持。