【发布时间】:2016-07-01 14:26:01
【问题描述】:
我有一个 CSV 文件的输入,我正在尝试用 Pig 处理它。在 csv 中,有一个日期列,其中包含某些行的损坏值。在我将 ToDate() 函数应用于 FOREACH...GENERATE 语句中的日期列之前,请建议我一种机制来过滤掉那些损坏的行(具有损坏的日期列)。
我的数据的示例格式是:
A,21,12/1/2010 8:26
B,33,12/1/2010 8:26
C,42,我被破坏了
D,30,12/1/2013 9:26
我希望能够加载它,然后将其转换为:
假设 csv 文件被加载到 Y(name,id,date)
X = FOREACH Y GENERATE ToDate(date, 'mm/dd/yyyy HH:mm') AS newdate;
我想在上面的语句之前应用FILTER 到Y 以过滤掉以C 开头的行。因为照原样,上面的语句抛出异常并且当我DUMP X; 时作业失败。
【问题讨论】:
-
我能想到的最明显和最直接的方法就是按字段的长度进行过滤。除此之外,您还可以编写一个 UDF 来捕获异常。
标签: csv datetime apache-pig