Orc not faster than csv in Hive?
对于在生产环境中使用Hadoop来说,我还很陌生。我使用独家新闻将一个大表从数据库引入Hive。 Scoop创建了一个逗号分隔的文本文件,并在Hive中创建了相应的表。
然后我执行了
由于文本文件与ORC相比效率低下(二进制数据,胖表的列式数据存储,压缩等),因此我希望获得巨大的数量级改进,但是查询执行时间似乎根本没有改变!
我在两个版本(文本,ORC甚至是镶木地板)上都使用了相同的简单查询,并且在联接中使用了其中几个表时进行了相同的精简。
其他信息:
我正在测试的主表大约有4.3亿行和大约50列。
我正在运行几个查询:
和
我也启用了向量化功能,如@sahil desai所建议的那样,但似乎确实有很大的不同(它确实将时间减少了几秒钟)。
这是怎么回事,为什么我看不到数量级的加速?您还需要什么详细信息?
根据我的经验,ORC更快。对每个HIVE表使用ORC文件将非常有益于快速获得HIVE查询的响应时间。我认为您必须启用向量化功能,向量化查询执行可以一次执行1024行,而不是每次执行单行,从而提高了扫描,聚合,过滤器和联接等操作的性能。
1 2 | set hive.vectorized.execution.enabled = true; set hive.vectorized.execution.reduce.enabled = true; |
有许多方法可以改善配置单元的性能,例如Tez执行,基于成本的查询优化(CBO)等。