来自Hive的文档:
如果表或分区包含许多小型 RCFile 或 ORC 文件, 然后上面的命令会将它们合并到更大的文件中。在以下情况下 RCFile 合并发生在块级别,而对于 ORC 文件 合并发生在条带级别,从而避免了 解压缩和解码数据。
我的问题是:块和条带有什么区别?
HDFS块是最低级别的,ORC条带是上层,这些级别是完全独立的,ORC中的条带不关心下层存储层。
HDFS块:
- HDFS块是最低级别,独立于文件格式。HDFS 将文件拆分为块以优化存储。 一个条带
- 可以存储在多个块中,一个条带可以包含多个条带或部分条带。HDFS将拆分文件,而不考虑条带格式或文件格式。 HDFS
- 存储每个文件块元数据,写入和读取文件对于上级ORC读取器是透明的,HDFS将负责所有块。
兽人条纹:
-
存储的上层。条纹确实对区块一无所知。
-
ORC 可在条带级别进行拆分。HDFS对ORC结构以及如何拆分它进行处理一无所知。HDFS 将文件拆分为块以优化存储。在单个容器中至少可以处理一个条带。您可以配置条带大小以适合块大小。
一些有用的链接。 请阅读以更好地理解:
HDFS块
HDFS 块与条带
兽语优化
S3 中的大 ORC 条纹和块填充 - 非常有用的博客