hive中的文件大小采用不同的文件格式

时间:2016-11-24 20:11:48

标签: hive orc

我有一个小文件(2MB)。我在这个文件上创建了一个外部hive表(存储为textfile)。我创建了另一个表(存储为ORC)并复制了上一个表中的数据。当我检查ORC表中的数据大小时,它超过2MB ORC是一种压缩文件格式,因此数据大小不应该更小吗?

2 个答案:

答案 0 :(得分:1)

从Hive 0.14开始,用户可以通过在其表或分区上发出CONCATENATE命令来请求将小ORC文件有效合并在一起。这些文件将在条带级别合并而不进行重新编译。

ALTER TABLE istari [PARTITION partition_spec] CONCATENATE;

答案 1 :(得分:0)

这是因为你的源文件太小了。 ORC具有复杂的结构,内部索引,页眉,页脚,postscript,压缩编解码器也添加一些结构等等。 有关详细信息,请参阅此处:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC#LanguageManualORC-ORCFileFormat 所有这些支持结构比数据消耗更多空间。对于这样的小文件,您实际上不需要存储列的最小/最大值,不需要blum过滤器等,因为您的文件可能适合内存。这种情况下最好的存储是未压缩的文本文件。您也可以尝试只是压缩源文件并检查它的大小。过小的gzip压缩文件可能比未压缩文件大。文件越大,压缩和使用orc的好处就越大。