避免个别行的todate in pig异常

hgb9j2n6  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(291)

我有一个输入作为一个csv文件,我正试图与Pig处理。在csv中,有一个日期列,其中包含一些行的损坏值。在将todate()函数应用于表中的日期列之前,请建议我使用一种机制来过滤那些已损坏的行(具有损坏的日期列) FOREACH...GENERATE 声明。
我的数据的样本格式是:
a、 2010年1月21日8:26
b、 2010年12月33日8:26
c、 42,我堕落了
d、 2013年12月30日9:26
我希望能够加载它,然后将其转换为:
假设csv文件加载到y(名称、id、日期)

X = FOREACH Y GENERATE ToDate(date, 'mm/dd/yyyy HH:mm') AS newdate;

我想申请 FILTERY 在上面的语句之前过滤掉以c开头的行。因为,照原样,当我 DUMP X; .

pn9klfpd

pn9klfpd1#

两次todate失败,
1) 当缺少日期或语法错误时,使用正则表达式筛选所有日期,

X = FILTER Y BY (date matches '/(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/');

2) 当日期进入dst时(https://en.wikipedia.org/wiki/daylight_saving_time)你的时区。你必须手动过滤。

相关问题