【impala】impala与hive区别之汉字字符串长度的不同

        问题描述:A表关联B表的一个目标值,通过部门和日期做关联,因B表中带有汉字格式如下:2018年5月(月目标),A表中的日期格式为2018-05-01,故A、B两表都需要进行字符串截取,最后的格式应该为“2018-05”。A表中直接用substr(cast(A.creater_time  as string),1,7)即可实现,B表则需要把后面的“月”截取掉,然后把“年”替换成“-”,然后进行left join B on B.date=A.date,应该是这样来写:translate(substr(target_date,1,9),'年','-')。

        问题呈现:当我用同个方法在Hive和Impal执行时的结果却是不同.

        Hive结果如下

   

        Impala结果如下

       

    一样的sql语句出现不同的结果.

解决办法:

Hive中修改translate(substr(target_date,1,9),'年','-')===》translate(substr(target_date,1,7),'年','-'),结果如下:

    

原因分析:Hive中汉字的字节和impala中汉字的字节长度不同造成。

猜你喜欢

转载自blog.csdn.net/weixin_38256991/article/details/80282061