impala不支持split函数(hive支持)

220 阅读1分钟

​ 场景:查看交接文档讲解,其中有一句话勾起了我的学习欲望,话是这么说的:“此逻辑有split函数impala不支持所以用的hive去执行”。

思考:难道impala不能使用其他函数替代吗?只能使用hive执行吗?

实践:impala不支持split函数,但是impala支持split_part函数

hive语句:

select organization_name ,split(organization_name, '')[size(split(organization_name, ''))-1] as ood_root_organization_name from ods_org_organization_definitions ;

 impala语句:

select organization_name ,case when length(split_part(organization_name,'',3)) = 0 then split_part(organization_name,'',2) else split_part(organization_name,'_',3) end as ood_root_organization_name from ods_org_organization_definitions;

 备注:这里为什么使用case when呢?因为这一列字段值不是规则统一的,有的是一个"",有的是两个""

结论:比较两段sql,hive语句比impala语句短、简洁,但impala执行时间比hive执行快,是hive执行速度的约210倍。