首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pig中进行数据处理,制表符分隔

在pig中进行数据处理,制表符分隔
EN

Stack Overflow用户
提问于 2017-08-29 00:01:15
回答 1查看 221关注 0票数 0

我对Pig非常陌生,所以在尝试在Pig中执行非常基本的处理时会遇到一些问题。

1-使用Pig加载该文件

2-编写一个处理逻辑来根据日期过滤记录,例如,行有2列col_1和col_2 (假设这些列是chararray ),我只需要获取col_1和col_2之间有1天差的记录。

3-最终将过滤记录存储在配置单元表中。

输入文件(制表符分隔) :-

代码语言:javascript
运行
复制
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

当我尝试的时候

代码语言:javascript
运行
复制
 A = LOAD '/user/inp.txt' USING  PigStorage('\t') as (col_1:chararray,col_2:chararray);

我得到的结果如下:- DUMP A;

代码语言:javascript
运行
复制
(,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)

不知道为什么?请有人能帮助我在这个如何解析制表符分隔的文件,以及如何转换为日期和过滤基于日期差异?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-08-29 00:23:03

使用ToDateDaysBetween将列转换为datetime对象,.This应提供差异,如果差异为== 1,则filter.Finally加载它。

代码语言:javascript
运行
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45923056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档