0
我想将Pig BigDecimal转换为Hive十进制类型,但值被gettined null。下面是示例代码:Pig BigDecimal to Hive十进制
猪脚本:
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。请建议如何解决这个问题。
任何消息?你看过其他类似的问题吗? –
为什么你在一个DOUBLE中存储一个整数“1”?为什么计数记录(例如,将这些1加起来)写入BIGDECIMAL?使用LONG或BIGINTEGER会更有意义... –
最终结果需要用十进制表示,因为下游需要十进制格式。将整型“1”转换为DOUBLE不是必需的,我只是尝试了不同的选项来存储十进制格式的最终总和,但无论以何种方式将它总结在配置单元表中,它都被存储为NULL。更新了代码以删除重复投射。 – HarishKotha