使用Hive的最新记录

时间:2015-04-15 14:57:06

标签: hive

输入数据

SNO |   Name  |     Salary  |   HireDate    
------------------------------------------
1   |   A     |     10      |   01-13-2014  
2   |   B     |     20      |   11-15-2014  
3   |   C     |     3       |   05-03-2015  
4   |   D     |     4       |   07-03-2015  
5   |   E     |     5       |   12-03-2015  
6   |   F     |     60      |   25-03-2015  
7   |   G     |     70      |   30-03-2015  

最终输出数据 我想使用配置单元查询

仅获取当前月份数据
SNO  |  Name  |     Salary  |   HireDate    
----------------------------------------
3    |   C    |      3      |   05-03-2015  
4    |   D    |      4      |   07-03-2015  
5    |   E    |      5      |   12-03-2015  
6    |   F    |     60      |   25-03-2015  
7    |   G    |     70      |   30-03-2015  

2 个答案:

答案 0 :(得分:1)

shell脚本

中执行此操作
curmon=`date +%m-%Y`
cusdate="01-$curmon";
$HIVE_HOME/bin/hive -e "select * from tablename where HireDate>$cusdate;"

curmon将存储当前月份和年份。

cusdate将存储本月的第1天。

Hive查询将显示超过本月第一天的所有结果。 (根据您的要求更改表名和列)

答案 1 :(得分:0)

只需在Hive中使用current_date和日期时间功能即可。这可能是最简单的方法:

select id.*
from inputdata id
where year(hiredate) = year(current_date()) and
      month(hiredate) = month(current_date());

编辑:

刚刚尝试了这一点,current_date()至少不是Hive 0.14的一个实现,尽管有文档。所以,你可以尝试:

select id.*
from inputdata id
where year(hiredate) = year(from_unixtime(unix_timestamp())) and
      month(hiredate) = month(from_unixtime(unix_timestamp()));