У кого-нибудь есть проблемы с неправильной работой фильтров свиньи. И вообще действует глупо.Свинцовый фильтр не работает
В качестве примера у меня есть несколько журналов, которые выглядят так.
a1
(2013-12-25 02:55:08,000085594,15468,80365991,1387940111723)
(2013-12-25 02:55:08,000085594,63943,80365991,1387940111723)
(2013-12-25 02:55:08,000085594,64014,80365991,1387940111723)
decribe a1
a1: {time:chararray, id:chararray, buckets::bucket: int, chararray, chararray)
Если я попытаюсь отфильтровать по 2 доллара. Я получаю сообщение об ошибке.
a2 = filter a2 by ($2 == 64034);
Я получаю следующее сообщение об ошибке. ОШИБКА 1066: невозможно открыть итератор для псевдонима a2.
Я немного испортил это, и не понимаю. Итак, я ошибаюсь в UDF Python, который возвращает «Да» или «Нет», если число соответствует.
@outputSchema('y:chararray')
def bucket(bucket):
if bucket == '64034':
return "Yes"
else:
return "No"
a3 = foreach a1 generate time, myfuncs.bucket($2), $3, $4;
describe a3
a3: {time:chararray, id:chararray, y:chararray, chararray, cararray}
Нет, когда я фильтрую на этом, это работает.
a4 = filter a3 by ($2 == 'Yes');
Это дает желаемый результат. Однако мне нужно запустить еще пару преобразований данных с другими UDF. Эти UDF ничего не делают для столбца $ 2. Они просто смотрят на столбец $ 1 и $ 3. Оба UDF работают, когда я использую их перед фильтром. Тем не менее, я получаю ошибку «Не удалось открыть псевдоним», если я пытаюсь применить UDF после фильтра. Кроме того, если я выполняю дополнительные UDF перед фильтром, а затем применяю фильтр - фильтр перестает работать, и я получаю ошибку «невозможно открыть псевдоним». Опять же, они не меняют схему в 2 доллара.
Итак, что можно здесь сделать? Во-первых, почему фильтр не работает. Во-вторых, почему некоторые UDF работают, а затем не работают с кажущейся логикой. Любое направление поиска неисправностей было бы полезно.
Для людей, которые нашли этот пост при поиске [ОШИБКА 1066: Невозможно открыть итератор псевдоним] (http://stackoverflow.com/questions/34495085/error -1066-неспособное к открытому-итератору-для-alias-in-pig-generic-solution) здесь [общее решение] (http://stackoverflow.com/a/34495086/983722). –