使用配置单元选择大范围分区中的数据

时间:2014-02-21 07:48:41

标签: hadoop hql hive hadoop-partitioning

我使用配置单元在大范围分区中选择数据时遇到了一些问题

这是我想要执行的HQL:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228')
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131228' 
and (trim(col1) IS NULL or trim(col1)='')
and length(col2)=12;

“cdate”是表RAW_TABLE

的分区

但在给我工作ID

之后却停滞不前

我将其更改为:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228')
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131225' 
and (trim(col1) IS NULL or trim(col1)='')
and length(col2)=12;

然后它开始工作

有没有可以帮助我执行第一个HQL的解决方案?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并尝试在SELECT语句的末尾使用CLUSTER BY 'partition_column'。使用它之后,我可以执行我的INSERT以获得更大的日期范围。

因此,如果您将查询更改为:

INSERT OVERWRITE TABLE summary_T partition(DateRange='20131222-20131228')
select col1, col2, col3 From RAW_TABLE 
where cdate between '20131222' and '20131228' 
and (trim(col1) IS NULL or trim(col1)='')
and length(col2)=12
CLUSTER BY DateRange;

表现将得到改善。

有关CLUSTER BY如何帮助查询的说明,您可以浏览本手册页,详细说明:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy