2012-06-05 2 views
1

Когда я пытаюсь запустить скрипт Свиньи, который имеет два «магазин» в том же файле, этот способHadoop нагрузки и магазин

store Alert_Message_Count into 'out'; 
store Warning_Message_Count into 'out'; 

Он висит, я имею в виду, что не происходит после того, как показывает 50% сделано.

Это неправильно? Не удается сохранить оба результата в одном файле (папке)?

ответ

0

Обычно Hadoop MapReduce не позволяет сохранять вывод задания в папку, которая уже существует, поэтому я бы предположил, что это невозможно (учитывая, что Pig переводит команды в последовательность шагов M/R) - но я ожидал бы некоторую форму сообщения об ошибке, а не просто зависать.

Если вы открываете трекер отслеживания кластера и просматриваете журналы для задачи, делает ли журнал ничего примечательного, которое может помочь диагностировать это дальше?

Может быть стоит проверить со списками рассылки свинью (если вы еще не сделали)

Если вы хотите добавить один набор данных в другой, используйте ключевое слово union:

grunt> All_Count = UNION Alert_Message_Count, Warning_Message_Count; 
grunt> store All_Count into 'out'; 
+0

Да, теперь он выдает исключение, но после долгого времени. Как вы сказали, он не позволяет записывать выходной файл, который уже существует. Когда я использую два отдельных файла, он работает нормально. В этом случае, как добавить/записать результаты в один файл? – Uno

+0

У двух выходов есть одна и та же «схема»? Если так посмотрите на ключевое слово union - http://ofps.oreilly.com/titles/9781449302641/advanced_pig_latin.html –

+0

Спасибо Крису. Да, они имеют одну и ту же схему. – Uno

1

HDFS делает нет режима добавления. Таким образом, в большинстве случаев, когда вы запускаете программы сокращения масштаба, выходной файл открывается один раз, данные записываются и затем закрываются. Предполагая этот подход, вы не можете записывать данные одновременно в один и тот же файл.

Попробуйте написать отдельные файлы и проверьте, не работают ли карты-красные программы. Если они все еще будут, то есть и другие проблемы.

Вы можете получить результаты и сократить количество журналов для анализа того, что пошло не так.

[Edit:]

Вы не можете писать в тот же файл или добавить в существующий файл. Функция добавления HDFS - это незавершенная работа.

Для работы над этим вы можете сделать две вещи:

1) Если у вас есть то же самое содержание схемы в обоих Alert_Message_Count и Warning_Message_Count, вы можете использовать союз как предложил Крис.

2) Выполняйте постобработку, если схема не совпадает. Это написать программу уменьшения карты, чтобы объединить два отдельных выхода в один.

+0

Когда я пишу в разные файлы, он делает это без проблем. Что можно сделать, чтобы добавить/написать несколько результатов в один файл? – Uno

+0

@ Нихил Десаи: См. Отредактированный ответ, а также ответ Криса. Вы не можете использовать append, но есть решения, основанные на существующих ограничениях. – pyfunc

+0

Спасибо. Пока что Союз должен мне помочь. В любом случае, я также рассмотрю второй вариант. – Uno

Смежные вопросы