select TWITTER_VOMIT
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 3) as YYYY
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 1) as MON
, regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 2) as DD
, concat(regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 3)
,case regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 1)
when 'Jan' then '-01-'
when 'Feb' then '-02-'
when 'Mar' then '-03-'
when 'Apr' then '-04-'
when 'May' then '-05-'
when 'Jun' then '-06-'
when 'Jul' then '-07-'
when 'Aug' then '-08-'
when 'Sep' then '-09-'
when 'Oct' then '-10-'
when 'Nov' then '-11-'
when 'Dec' then '-12-'
else '-**-'
end
,regexp_extract(TWITTER_VOMIT, '^[A-Z][a-z]* ([A-Z][a-z]*) ([0-9][0-9]*) .* ([0-9]*)$', 2)
) as YYYY_MM_DD
from TWITTER_FEED
以你为例
twitter_vomit yyyy mon dd yyyy_mm_dd
Thu Dec 10 06:21:00 +0000 2015 2015 Dec 10 2015-12-10
3条答案
按热度按时间2o7dmzc51#
您需要开发与此类似的基于java的udf:一旦开发完成,就需要编译jar并将其发送到集群,添加jar文件并创建临时函数。
g6ll5ycj2#
也许一个自定义项是过度的,你想要的只是一个快速的解决方案,例如一些不好的格式的regexp按摩(注意:你的工作是根据各种twitter日期彻底测试它,并相应地调整按摩)
以你为例
llew8vvj3#
创建自定义自定义项:
步骤1:用这个文件创建一个jar文件。在本地文件系统中复制这个jar文件
第二步:打开Hive终端:
第三步:添加jar/home/oxigen/dateparser.jar;
第4步:创建临时函数dateparsertwitter为'org.apache.hadoop.hive.contrib.dateparser.dateparserhive';
第五步:从twitter limit 1中选择dateparsertwitter('wed mar 02 09:56:41+0000 2016');
这应该很管用!