Hivesql里的limit使用误区

select * from HIVE_D_MT_UU_H_SPARK limit 1000;
读取前1000行。


需求:
在hive表前1000行里,过滤出不重复的refid,imsi。
错误的写法:
select distinct refid,imsi from HIVE_D_MT_UU_H_SPARK limit 1000;
会去读取全表,把0~1000行的不重复refid,imsi显示出来。

正确的写法:
select distinct refid,imsi from (select * from HIVE_D_MT_UU_H_SPARK limit 1000);


调优的写法:
CREATE TABLE TEMP_HIVE_D_MT_UU_H_SPARK AS
select * from HIVE_D_MT_UU_H_SPARK limit 1000;
select distinct refid,imsi from TEMP_ HIVE_D_MT_UU_H_SPARK;


hive最快的执行就是不走MapReduce。简单的select的是最快的,嵌套啥的都比较忙。与关系型数据库不同。
调优的写法执行更快。



你可能感兴趣的:(大数据-HIVE,HIVE入门教程)