hadoop cdh5的pig隐式转化(int到betyarray)不行了

27 篇文章 0 订阅
在从CDH3升级到CDH5后,Pig脚本遇到隐式转换问题,无法将int转换为chararray或bytearray。错误提示为'can't cast to bytearray'。解决办法是在合并数据前确保数据类型一致。此外,CDH5中的Hadoop命令也有变化,如'hadoop fs -mkdir'不再自动创建父目录,需使用'mkdir -p','rmr'命令被弃用,改用'rm -r'。
摘要由CSDN通过智能技术生成

cdh3上,pig支持int到chararray的隐式转化,但到cdh5不行。

pig code is as follows:

%default Cleaned_Log /user/usergroup_mdmp/test/cleaned/2015-01-05/5/part-r-00000

%default Industry_Path /user/usergroup_mdmp/test/report/historical/appcategory/2015/industry

origin_cleaned_data = LOAD '$Cleaned_Log' USING PigStorage(',')
AS (ad_network_id:chararray,
    app_id:chararray,
    app_category_id:chararray,
    quadkey:chararray);

category_data = foreach origin_cleaned_data generate (int)app_category_id;

industry_existed_Data = LOAD '$Industry_Path' USING PigStorage(',') AS (appcategory_id:chararray);

result = UNION category_data, industry_existed_Data;

dump result;
--STORE result INTO '/user/usergroup_mdmp/test/report/historical/hour/2015/test' USING PigStorage(',');

老Cdh3跑的好好的,

到cdh5报错:can‘t cast to bytearray。原来不能将int隐式转化为chararray了。

所以,合并前要合并成同一类型int。


其他:

        int到bytearray也不行

chararray到bytearray也不行:

category_data = foreach origin_cleaned_data generate (bytearray)app_category_id;

industry_existed_Data = LOAD '$Industry_Path' USING PigStorage(',') AS (appcategory_id:chararray);
result = UNION category_data, industry_existed_Data;


另外:

cdh5 的hadoop命令也有所改动

1,hadoop fs -mkdir /tt/xx :不能生成父路径不存在的路径,只能创建已存在目录下当前的一级目录。如果要创建多级不存在目录的路径,要用mkdir -p.

2,删除命令变为rm -r,原来的rmr 已经deprecated,还可以用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值