Свинья не агрегированных предупреждений о месте выхода? - PullRequest
8 голосов
/ 14 декабря 2011
Pig: 0.8.1-cdh3u2
Hadoop: 0.20.2-cdh3u0

Отладка FIELD_DISCARDED_TYPE_CONVERSION_FAILED предупреждений, но я не могу нигде печатать отдельные предупреждения.Отключение агрегации с помощью переключателя -w или aggregate.warnings=false удаляет сводные сообщения, НО также удаляет фактическое предупреждение, поэтому я не вижу, какое преобразование типов не удалось.

В журнале свиньи ничего не записано дляэтот прогон, И нет места, где я могу найти журналы с отдельными предупреждениями.Я что-то упустил очевидное или просто не работает?

Ответы [ 2 ]

0 голосов
/ 15 мая 2015

Трудно найти, какие данные или значение вызывают проблему, но, по крайней мере, вы можете найти столбец, который создает эту проблему. Найдя столбец, вы можете использовать Dynamic Invoker , который может помочь вам в преобразовании типов.

Как использовать Dynamic Invoker:
DEFINE ConvertToDouble InvokeForDouble ('java.lang.Double.parseDouble', 'String');

ConvertToDouble (имя_столбец);

0 голосов
/ 14 декабря 2012

Журналы заданий Hadoop записываются локально на каждом вычислительном узле.Поэтому сначала вам нужно настроить диспетчер кластеров hadoop, чтобы собирать файлы журналов в распределенную файловую систему, чтобы вы могли их анализировать.Если вы используете Hadoop-on-demand (http://hadoop.apache.org/docs/r0.17.0/hod.html), вы можете сделать это, указав что-то вроде:

log-destination-uri = hdfs://host123:45678/user/hod/logs

См. Документацию HOD по адресу http://hadoop.apache.org/docs/r0.17.0/hod_user_guide.html#Collecting+and+Viewing+Hadoop+Logs

После того, как у вас есть журналы HDFS, вы можете выполнить простой запрос PIG, чтобы найти ошибочное преобразование. Что-то вроде следующего должно помочь:

a1= LOAD '*.log' USING PigStorage(']') ;
a2= FILTER a1  by ($1 MATCHES ' WARN.*Unable to interpret value.*');
dump a2;
...