2013-12-25 3 views
0

Отношение Registered_Usage получается путем полного внешнего соединения по нескольким отношениям, а ключи, полученные из этих отношений, находятся в $ 0, $ 6, $ 12, $ 18, $ 24 и $ 30 от Join_Usage. Клавиши для каждой записи, если не равны нулю, равны.Вложенный условный генерация в Apache Pig

Я хочу получить новое отношение использования от Присоединенного использования, так что $ 0 использования состоит из ключа для соответствующей записи в Join_Usage (т. Е. Не является нулевым).

Я использую следующий код:

Usage = foreach Joined_Usage generate ($0 is not null ? $0 : 
         ($6 is not null ? $6 : 
          ($12 is not null ? $12 : 
           ($18 is not null ? $18 : 
           $24 is not null ? $24 : $30) 
           ) 
          ) 
         ) 
        ); 

Однако, когда я найти кол нет. используемых в качестве:

b = группа Использование всех; c = foreach b сгенерировать COUNT (использование);

счет показывает намного больше Join_Usage, что подразумевает дублирование записей ... Я не понимаю, как это происходит ... пожалуйста, помогите!

ответ

0

Вы должны выполнить профилирование данных - пытались ли вы получать значения COUNT_STAR и COUNT на значения DISTINCT? Вы уверены, что не присоединяетесь к отношениям, в которых есть дубликаты ключей? Вы можете проверить это, группируя ключи соединения, прежде чем выполнять фактическое соединение (и используйте MAX для получения полей, которые не являются ключами).