Я пытаюсь преобразовать Pig BigDecimal в Dive Decimal, но значения gettined null. Вот пример кода:Pig BigDecimal to Hive decimal
Свиньи Сценарии:
a = LOAD 'test.txt' using TextLoader() as (col1:chararray,col2:int,col3:chararray,col4:int);
b = foreach a generate *,1 as rec_cnt;
c = group b by col1,col3;
d = foreach c generate flatten(group),(bigdecimal) SUM(rec_cnt) as grp_code;
STORE d into 'user/test' Using PigStorage(',');
STORE d into 'default.test' using org.apache.hive.hcatalog.pig.HCatStorer();
В приведенном выше коде, значение сумма записей отсчетов идет должным образом в файле HDFS хранится как «пользователь/тест». Но с HcatStorer в том же поле заполняется NULL для всех записей. Таблица тестов создается с этим определением столбца DECIMAL (16,0). Я использую Hive 1.1.0. Пожалуйста, попробуйте решить эту проблему.
Любые сообщения? Вы смотрите на другие подобные вопросы здесь? –
Почему вы храните целое число «1» в DOUBLE ??? И зачем подсчитывать записи (например, суммировать эти 1) в BIGDECIMAL ??? Использование LONG или BIGINTEGER будет иметь больший смысл ... –
Конечный результат должен быть десятичным, так как нисходящий поток нуждается в нем в десятичном формате. Кастинг целого числа «1» для DOUBLE не нужен, я просто пытался использовать разные варианты для хранения окончательной суммы в десятичном формате, но он получает как NULL, каким образом я суммировал его в таблице hive. Обновлен код для удаления двойного литья. – HarishKotha