Hive找到预期的查询运行时间

时间:2013-07-04 08:32:27

标签: runtime hive hiveql

我想在Hive中找到预期的查询运行时间。使用EXPLAIN提供执行计划。有没有办法找到预期的时间?

我需要Hive相当于SQL查询EXPLAIN COSTS。

3 个答案:

答案 0 :(得分:2)

目前没有OOTB功能可以促进这一点。实现这一目标的一种方法是从历史中吸取教训。根据您之前运行的类似数据和查询收集模式,并尝试推断出一些见解。您可能会在此过程中找到Starfish等工具。

我不建议您根据数据的子集来决定任何内容,因为对小数据集和实际数据集的运行查询是非常不同的。这很适合测试功能,但不适用于任何类型的成本近似。这背后的原因是流程中涉及很多因素,如系统资源(磁盘,CPU插槽,N / W等),系统配置,其他正在运行的作业等。您可能会在小型数据集上找到平稳的操作,但是随着数据量的增加,所有这些因素开始发挥重要作用。即使是一个小的配置参数也可能发挥重要作用。(您可能已经注意到,Hive查询有时最初运行速度很快,但逐渐开始变慢)。此外,执行Hive查询比简单的MR作业更复杂。

请参阅此JIRA,了解他们在哪里讨论为Hive中的联接开发基于成本的查询优化。您可能还会发现this有帮助。

答案 1 :(得分:1)

我认为这是不可能的,因为内部map reduce会针对任何特定的Hive查询执行。而map reduce工作的执行时间取决于集群负载及其配置。因此很难预测执行时间。可能你可以做一件事,你可以在运行查询之前使用一些计时器,然后在完成后你可以计算执行所需的确切执行时间。

答案 2 :(得分:0)

您可以使用分区,存储桶功能等对表中的一小部分记录进行采样,然后针对小数据集运行查询。注意执行时间,然后乘以因子(total_size / sample_size)。