我正在为一个看似简单但却给我带来很多麻烦的问题而挣扎。
SELECT COUNT(*) FROM mytable where partition_column IN (SELECT MAX(partition_column) FROM mytable )
mytable是一个2to-hive外部表,由列partition\u列进行分区。运行此查询需要10分钟。。
当我进行两个单独的查询时:
SELECT MAX(partition_column) FROM mytable
> 2020-06-29
SELECT COUNT(*) FROM mytable where partition_column = '2020-06-29'
它工作的超精细和超快速。
我错过什么了吗?谢谢您
我使用的是Hive1.2.1和Hadoop2.7.3
1条答案
按热度按时间gev0vcfq1#
子查询的处理时间似乎很长。由于您在与子查询相同的列和表上进行筛选,因此reducer步骤需要很长时间来处理。因此导致查询运行缓慢。
您可以通过引入cte来改进查询,cte将创建一个临时结果集。如下所示:
更多关于Hivecte的官方文件。