AvroCoder.isDeterministic返回 false。
为什么 AvroCoder 不是确定性的?Avro 记录不会总是被编码成相同的字节流吗?
由于 Avro 编码器不是确定性的,因此 Avro 记录不能用作分组操作的键。将 Avro 唱片变成钥匙的最佳方法是什么?我们应该只使用 Avro 记录的 json 表示吗?
AvroCoder.isDeterministic返回 false。
为什么 AvroCoder 不是确定性的?Avro 记录不会总是被编码成相同的字节流吗?
由于 Avro 编码器不是确定性的,因此 Avro 记录不能用作分组操作的键。将 Avro 唱片变成钥匙的最佳方法是什么?我们应该只使用 Avro 记录的 json 表示吗?
根据Avro 规范,看起来只有 Arrays 和 Maps 具有不确定的二进制编码。
地图看起来像是非确定性编码的,原因有两个
数组看起来像是非确定性编码的,因为
因此,对于任何没有数组或映射的模式,我认为二进制编码应该是确定性的。所以我认为我们可以通过继承 AvroCoder并覆盖AvroCoder.isDeterministic以返回 true 来创建确定性编码器。
AvroDeterministicCoder是我第一次尝试创建这样的编码器。
AvroCoder
可以检查正在编码的模式和类型,并决定何时确定。它是在 GitHub 提交#a806df中添加的。
当基础集合是确定性顺序时,它包括对确定性编码数组和映射的支持。