微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我什么时候应该在镶木地板中使用字典编码? 字典编码PLAIN_DICTIONARY = 2和RLE_DICTIONARY = 8

如何解决我什么时候应该在镶木地板中使用字典编码? 字典编码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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?