Spark 2.4 提供的复杂数据结构函数

Posted bihadoop

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark 2.4 提供的复杂数据结构函数相关的知识,希望对你有一定的参考价值。

spark 2.3提供的函数


array

array(expr,...) -返回具有给定元素的数组.

Examples:

>SELECTarray(1, 2, 3);
 [1,2,3]

 

array_contains

array_contains(array, value) -如果数组包含值,则返回true.

Examples:

>SELECT array_contains(array(1,2,3),2);
 true

map_keys

map_keys(map) -Returns an unordered array containing the keys of the map.

Examples:

>SELECT map_keys(map(1,'a',2,'b'));
 [1,2]

 

map_values

map_values(map)- Returns an unordered array containing the values of the map.

Examples:

>SELECT map_values(map(1,'a',2,'b'));
 ["a","b"]

 

spark 2.4提供的新函数


array_distinct

array_distinct(array) -从数组中删除重复值.

Examples:

>SELECT array_distinct(array(1,2,3,null,3));
 [1,2,3,null]

 

array_except

array_except(array1, array2) -返回array1中的元素数组,但不返回array2中的元素数组,不重复.

Examples:

>SELECT array_except(array(1, 2, 3),array(1, 3, 5));
 [2]

 

array_intersect

array_intersect(array1, array2) -返回array1array2交叉点中的元素数组,不重复.

Examples:

>SELECT array_intersect(array(1, 2, 3),array(1, 3, 5));
 [1,3]

 

array_join

array_join(array, delimiter[,nullReplacement]) -使用分隔符和替换空值的可选字符串连接给定数组的元素。如果没有为Null替换设置值,则过滤任何空值。

Examples:

>SELECT array_join(array('hello','world'),' ');
 hello world
>SELECT array_join(array('hello',null ,'world'),' ');
 hello world
>SELECT array_join(array('hello',null ,'world'),' ',',');
 hello , world

 

array_max

array_max(array) -返回数组中的最大值。将跳过空元素。

Examples:

>SELECT array_max(array(1,20,null,3));
 20

 

array_min

array_min(array) -返回数组中的最小值。将跳过空元素。

Examples:

>SELECT array_min(array(1,20,null,3));
 1

 

array_position

array_position(array, element) -返回数组第一个元素的(基于1的)索引.

Examples:

> SELECT array_position(array(3,2,1),1);
 3

 

array_remove

array_remove(array, element) -从数组中删除与元素相等的所有元素.

Examples:

>SELECT array_remove(array(1,2,3,null,3),3);
 [1,2,null]

 

array_repeat

array_repeat(element, count) -返回包含元素计数次数的数组.

Examples:

>SELECT array_repeat('123',2);
 ["123","123"]

 

array_sort

array_sort(array) -按升序排列输入数组。输入数组的元素必须是可排序的。空元素将放在返回数组的末尾.

Examples:

>SELECT array_sort(array('b','d',null,'c','a'));
 ["a","b","c","d",null]

 

array_union

array_union(array1, array2) -返回array1array2并集中元素的数组,不重复.

Examples:

>SELECT array_union(array(1, 2, 3),array(1, 3, 5));
 [1,2,3,5]

 

arrays_overlap

arrays_overlap(a1, a2) - 如果a1至少包含a2中也存在的非空元素,则返回true。如果数组没有公共元素,并且它们都是非空的,并且其中任何一个包含空元素,则返回null,否则返回false.

Examples:

>SELECT arrays_overlap(array(1,2,3),array(3,4,5));
 true

 

arrays_zip

arrays_zip(a1, a2, ...) -返回结构的合并数组,其中第n个结构包含输入数组的所有第n个值.

Examples:

>SELECT arrays_zip(array(1,2,3),array(2,3,4));
 [{"0":1,"1":2},{"0":2,"1":3},{"0":3,"1":4}]
>SELECT arrays_zip(array(1,2),array(2,3),array(3,4));
 [{"0":1,"1":2,"2":3},{"0":2,"1":3,"2":4}]

 

map_concat

map_concat(map,...) -返回所有给定映射的并集

Examples:

>SELECT map_concat(map(1,'a',2,'b'),map(2,'c',3,'d'));
 {1:"a",2:"c",3:"d"}

 

map_from_arrays

map_from_arrays(keys,values) -使用一对给定的键/值数组创建映射。键中的所有元素都不应为空

Examples:

>SELECT map_from_arrays(array(1.0,3.0),array('2','4'));
 {1.0:"2",3.0:"4"}

 

map_from_entries

map_from_entries(arrayOfEntries)-返回从给定项数组创建的映射.

Examples:

> SELECT map_from_entries(array(struct(1,'a'),struct(2,'b')));
 {1:"a",2:"b"}

 


整理自 spark官网

以上是关于Spark 2.4 提供的复杂数据结构函数的主要内容,如果未能解决你的问题,请参考以下文章

Java语言在Spark3.2.4集群中使用Spark MLlib库完成XGboost算法

在这个 spark 代码片段中 ordering.by 是啥意思?

如何使用用户提供的 Hadoop 正确配置 Spark 2.4

spark关于join后有重复列的问题(org.apache.spark.sql.AnalysisException: Reference '*' is ambiguous)(代码片段

Spark闭包与序列化

关于代码片段的时间复杂度