在Hadoop:权威指南第 4 版的第 137 页中,它讨论了面向列的格式文件,并显示了下面的图片。
在 RCFile 中,为什么数字的顺序是1,4,2,5,3,6,7,10,8,11,9,12
而不是1,4,7,10,2,5,8,11,3,6,9,12
?
在Hadoop:权威指南第 4 版的第 137 页中,它讨论了面向列的格式文件,并显示了下面的图片。
在 RCFile 中,为什么数字的顺序是1,4,2,5,3,6,7,10,8,11,9,12
而不是1,4,7,10,2,5,8,11,3,6,9,12
?
首先,RC 不是柱状文件,它是记录柱状文件。RC 和 ORC 都是可拆分的。这意味着您不会读取所有文件以仅获得几行,并且可以由许多容器并行读取。这就是我们需要拆分的原因。
Splits 包含组合在一起的行,可以相互独立地读取,同时列也分组在 splits 内。类似的数据可以更好地压缩,因此如果将列分组在一起,它会提高压缩率。在您的示例中,一个拆分仅包含两行,但它可以包含 10000 或更多行。
官方文档对 RC 文件的描述:
作为行存储,RCFile 保证同一行中的数据位于同一节点中。
作为列存储,RCFile 可以利用列数据压缩并跳过不必要的列读取。
另请阅读有关ORC的信息。使用 ORC 中的索引,可以轻松地在最低级别过滤条带。此功能称为谓词下推。