ОШИБКА 1066: невозможно открыть итератор для псевдонима в Pig, общее решение

Очень распространенное сообщение об ошибке в Apache Pig:

ОШИБКА 1066: невозможно открыть итератор для псевдонима

Есть несколько вопросов, в которых упоминается эта ошибка, но ни один из них не дает общего подхода к ее устранению. Отсюда этот вопрос:

Что делать, если вы получаете ОШИБКУ 1066: невозможно открыть итератор для псевдонима?


person Dennis Jaheruddin    schedule 28.12.2015    source источник


Ответы (2)


Сообщение «ОШИБКА 1066: невозможно открыть итератор для псевдонима myAlias» предполагает, что что-то идет не так в строке, где вы используете myAlias.

Однако обычно вы увидите эту ошибку, если что-то пошло не так ДО того, как вы попытаетесь использовать этот псевдоним. Итак, первое, что нужно сделать, это просмотреть сообщение об ошибке и посмотреть, действительно ли это первая ошибка, которая выдается.

Вот что я нашел эффективным способом справиться с этой ошибкой, когда мне было нелегко обнаружить более раннюю ошибку:

  1. Запускайте код до тех пор, пока вы не определите псевдоним.
  2. Внимательно посмотрите, не видите ли вы упоминания об ОШИБКЕ (часто она в последних строках, но иногда это может произойти и раньше)
  3. К настоящему времени у вас, вероятно, есть ошибка, если это так: разберитесь с ней и перейдите к 1.
  4. Возможно, у вас не было ошибки до появления псевдонима, в этом случае оцените строку, в которой встречается псевдоним.
  5. Если возникает ошибка: Обработайте ее и перейдите к пункту 4; Если ошибок не возникает, запустите код до того, как вы будете использовать псевдоним во второй раз, и перейдите к 3.

Примечания:

  • Чтобы легко запускать код PIG построчно: Откройте pig в командной строке (например, просто введите pigили pig -useHCatalog)
  • Если вы запутались, убедитесь, что вы определили псевдоним только один раз. (Я считаю, что это хорошая практика в целом)
person Dennis Jaheruddin    schedule 28.12.2015
comment
Предполагается, что это будет общий подход к сообщению об ошибке, так как такие комментарии/улучшения очень приветствуются! - person Dennis Jaheruddin; 28.12.2015

Однажды я получил эту ошибку при использовании функции SUM. Я суммировал значения, среди которых были нули. После фильтрации нулевых значений в предыдущих строках все заработало правильно.

person zach    schedule 11.03.2018