hive和presto的求数组长度函数区别(hive&cardinality)

Posted Mr.zhou_Zxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive和presto的求数组长度函数区别(hive&cardinality)相关的知识,希望对你有一定的参考价值。

1.数据示例:

123456@qq.com

2.目的:

获取邮箱字符串’@'后字符串

3.实现

3.1 hive用法

SELECT 
email.email,
(case when size(split(email.email, '@')) = 2 then split(t1.email, '@')[1] else '' end ) as email_suffix
FROM `email`

3.2 presto用法

SELECT 
email.email,
(case when cardinality(split(email.email, '@')) = 2 then split(t1.email, '@')[2] else '' end ) as email_suffix
FROM `email`

4.比较

在计算数组长度的时候,hive和presto的函数不同
其中hive的size函数默认数组的下标从0开始
presto的cardinality函数默认数组的下标从1开始

以上是关于hive和presto的求数组长度函数区别(hive&cardinality)的主要内容,如果未能解决你的问题,请参考以下文章

等效于 hive 中 Presto 的 transform() 函数

Hive中Presto UNNEST函数的等价物是啥

hiveimpalapresto的区别

presto和hive日期函数对比

JSONS上hive中的拆分函数

HIV组件