【发布时间】:2019-01-20 23:16:39
【问题描述】:
我正在使用 Pig 读取一个巨大的 CSV 文件(+29000 行),看起来像这样
我感兴趣的是开始和结束,它们是日期
我正在尝试查找 1930 年活跃的项目。所以首先我使用以下语句加载文件:
stations = LOAD '/mytp/isd-history.csv'
USING PigStorage(',')
AS
(
id:int,
wban:long,
name:chararray,
country:chararray,
state:chararray,
icao:chararray,
lat:double,
lon:double,
ele:double,
begin:chararray,
end:chararray
);
然后我使用此查询按日期过滤
items_active_1930 = FILTER stations
BY ToDate(begin,'yyyy-MM-dd') >= ToDate('1930-01-01')
AND ToDate(end,'yyyy-MM-dd') <= ToDate('1930-12-31');
当我尝试转储时,作业失败,结果如下:
无法打开别名 items_active_1930 的迭代器。后端错误:执行时出现异常 [POUserFunc (Name: POUserFunc(org.apache.pig.builtin.ToDate2ARGS)[datetime] - scope-172 Operator Key: scope-172) children: null at []]: java.lang.IllegalArgumentException : 无效格式:“开始”
我想知道是否可以在 FILTER 中,首先检查 begin 和 date 是否都是与指定日期格式匹配的有效日期,以便 ToDate() 中不会出现错误
【问题讨论】:
标签: date hadoop apache-pig