繁体   English   中英

Hive查询仅花费大量时间来启动map-reduce作业

[英]Hive query taking a lot of time just to launch map-reduce jobs

我们正在使用Hive进行临时查询,并且拥有一个Hive表,该表分为两个字段(date,id)

现在,对于每个日期,大约有1400个ID,因此在一天之内会添加许多分区。 实际数据位于s3中。 现在,我们面临的问题是假设我们从表中进行一个月的select count(*) ,然后仅花费很长的时间(大约1小时52分钟)即可启动地图精简作业。

当我在Hive verbose模式下运行查询时,我可以看到它这次的花费实际上决定了要生成多少个映射程序(计算拆分)。 有什么方法可以减少启动地图减少工作的滞后时间?

这是此滞后时间内正在记录的日志消息之一:

13/11/19 07:11:06 INFO mapred.FileInputFormat: Total input paths to process : 1
13/11/19 07:11:06 WARN httpclient.RestS3Service: Response '/Analyze%2F2013%2F10%2F03%2F465' - Unexpected response code 404, expected 200 

这可能是因为使用过度分区的表会导致查询计划阶段花费很长时间。 更糟糕的是,查询计划阶段本身可能比查询执行阶段花费更长的时间。

解决此问题的一种方法是调整Metastore 但是更好的解决方案是设计一个有效的架构并摆脱不必要的分区。 相信我,您真的不需要太多的小分区。

另外,您也可以尝试在发出查询之前将hive.input.format设置为org.apache.hadoop.hive.ql.io.CombineHiveInputFormat

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM