如何解决我什么时候应该在镶木地板中使用字典编码? 字典编码PLAIN_DICTIONARY = 2和RLE_DICTIONARY = 8
我看到镶木地板支持按列的字典编码,并且字典编码为described in the GitHub documentation:
字典编码(PLAIN_DICTIONARY = 2和RLE_DICTIONARY = 8)
字典编码可构建给定列中遇到的值的字典。字典将按列块存储在字典页面中。值使用RLE /位打包混合编码存储为整数。如果字典变得太大,无论是在大小上还是在不同值的数量上,编码都会退回到普通编码。首先写入字典页面,然后再写入列块的数据页面。
字典页面格式:字典中的条目-按照字典顺序-使用普通编码。
数据页格式:用于对存储为1个字节的条目ID进行编码的位宽(最大位宽= 32),其后是使用上述RLE /位压缩方式编码的值(具有给定的位宽)。
在Parquet 2.0规范中不推荐使用PLAIN_DICTIONARY枚举值。对于Parquet 2.0+文件,最好在数据页面中使用RLE_DICTIONARY,在词典页面中使用PLAIN。
好的。...我怎么知道何时使用字典编码?
有什么经验法则可以帮助您吗?例如如果某列中的90%的值应该是某个特定的集合,我应该使用它们吗?
- 所有值都位于一个很小的集合内的整数列→对于字典编码而言似乎很完美
- 整数列,其中99%的值位于一个很小的集合中,但1%的值不太可能形成任何聚类→不确定
- 可能没有相同值的字符串列→似乎字典编码不是一个好主意
是否有文档说明在各种情况下哪种策略合适?
解决方法
我不知道任何建议何时使用或不使用字典编码的文档(至少在箭头方面)。这是一个很好的问题,您的直觉是合理的-也许您可以尝试两种方式写入此类数据,并比较文件大小和读/写速度。我很想知道您的发现。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。