我对Pig非常陌生,所以在尝试在Pig中执行非常基本的处理时会遇到一些问题。
1-使用Pig加载该文件
2-编写一个处理逻辑来根据日期过滤记录,例如,行有2列col_1和col_2 (假设这些列是chararray ),我只需要获取col_1和col_2之间有1天差的记录。
3-最终将过滤记录存储在配置单元表中。
输入文件(制表符分隔) :-
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)
不知道为什么?请有人能帮助我在这个如何解析制表符分隔的文件,以及如何转换为日期和过滤基于日期差异?
谢谢
发布于 2017-08-28 16:23:03
使用ToDate和DaysBetween将列转换为datetime对象,.This应提供差异,如果差异为== 1,则filter.Finally加载它。
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();
https://stackoverflow.com/questions/45923056
复制