AvroCoder.isDeterministic返回 false。
为什么 AvroCoder 不是确定性的? Avro 记录不会总是被编码到相同的字节流中吗?
由于 Avro Coder 不是确定性的,Avro 记录不能用作 group by 操作的键。将 Avro 记录变成 key 的最佳方法是什么?我们应该只使用 Avro 记录的 json 表示形式吗?
最佳答案
基于Avro specification看起来只有数组和映射具有不确定的二进制编码。
由于两个原因, map 看起来像是不确定性编码的
- 未指定元素的顺序
- 可以通过指定 block 中的元素数量或字节数以两种不同的方式对 block 进行编码。
数组看起来像是非确定性编码,因为
- 可以通过指定 block 中的元素数量或字节数两种不同的方式对 block 进行编码。
因此,对于任何没有数组或映射的模式,我认为二进制编码应该是确定性的。所以我认为我们可以通过子类化AvroCoder来创建一个确定性编码器并压倒一切AvroCoder.isDeterministic返回 true。
AvroDeterministicCoder这是我第一次尝试创建这样的编码器。
关于avro - 为什么 AvroCoder 不是确定性的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129664/