Я использую 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 (Имя: POUserFunc (org.apache.pig.builtin.ToDate2ARGS) [datetime] - scope-172 Ключ оператора: scope-172) children: null at []]: java.lang.IllegalArgumentException : Неверный формат: «начало»
Я хотел бы знать, возможно ли в FILTER сначала проверить, являются ли даты начала и даты действительными датами, которые соответствуют указанному формату даты, чтобы не возникало ошибок в ToDate ()