我是Pig的新手,因此在尝试在Pig中执行非常基本的处理时面临一些问题。
1-使用Pig加载该文件
2-编写处理逻辑以根据日期过滤记录,例如,行有2列col_1和col_2(假设列是chararray),我只需要获取col_1和col_1之间有1天差异的记录COL_2。
3-最后将过滤后的记录存储在Hive表中。
输入文件(制表符分隔): -
2016-01-01T16:31:40.000+01:00 2016-01-02T16:31:40.000+01:00
2017-01-01T16:31:40.000+01:00 2017-01-02T16:31:40.000+01:00
当我尝试
时 A = LOAD '/user/inp.txt' USING PigStorage('\t') as (col_1:chararray,col_2:chararray);
我得到的结果如下: - DUMP A;
(,2016-01-03T19:28:58.000+01:00,2016-01-02T16:31:40.000+01:00)
(,2017-01-03T19:28:58.000+01:00,2017-01-02T16:31:40.000+01:00)
不确定为什么? 请问有人可以帮我解决这个如何解析制表符分隔文件以及如何将该字符串转换为日期并根据日差进行过滤?
由于
答案 0 :(得分:1)
使用ToDate将列转换为datetime对象并使用DaysBetween。这应该给出差异,如果差异== 1则过滤。最后加载它。
A = LOAD '/user/inp.txt' USING PigStorage('\t') as (col_1:chararray,col_2:chararray);
B = FOREACH A GENERATE DaysBetween(ToDate(col_1,'yyyy-MM-dd HH:mm:ss'),ToDate(col_2,'yyyy-MM-dd HH:mm:ss')) as day_diff;
C = FILTER B BY (day_diff == 1);
STORE C INTO 'your_hive_partition' USING org.apache.hive.hcatalog.pig.HCatStorer();