我有一个小文件(2MB)。我在这个文件上创建了一个外部配置单元表(存储为文本文件)。我创建了另一个表(存储为 ORC)并从前一个表中复制了数据。当我检查 ORC 表中的数据大小时,它超过了 2MB。
ORC是一种压缩文件格式,所以数据量不应该更小吗?
问问题
673 次
2 回答
1
从 Hive 0.14 开始,用户可以通过在其表或分区上发出 CONCATENATE 命令来请求将小型 ORC 文件有效地合并在一起。文件将在条带级别合并,无需重新序列化。
ALTER TABLE istari [PARTITION partition_spec] 连接;
于 2017-04-11T06:13:30.737 回答
0
这是因为你的源文件太小了。ORC 结构复杂,内部索引、页眉、页脚、postscript、压缩编解码器还添加了一些结构等。详情参见:https ://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC# LanguageManualORC-ORCFileFormat 所有这些支持结构比数据消耗更多的空间。对于这样的小文件,您实际上不需要存储列的最小/最大值,不需要 blum 过滤器等,因为您的文件可能适合内存。这种情况下的最佳存储是未压缩的文本文件。您也可以尝试仅压缩源文件并检查其大小。太小的 gzip 文件可能比未压缩的文件大。文件越大,压缩和使用 orc 的好处就越大。
于 2016-11-25T09:05:13.220 回答