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:
>
SELECTarray_contains(
array(
1,
2,
3),
2);
true
map_keys
map_keys(map) -Returns an unordered array containing the keys of the map.
Examples:
>
SELECTmap_keys(
map(
1,
'a',
2,
'b'));
[
1,
2]
map_values
map_values(map)- Returns an unordered array containing the values of the map.
Examples:
>
SELECTmap_values(
map(
1,
'a',
2,
'b'));
[
"a",
"b"]
spark 2.4提供的新函数
array_distinct
array_distinct(array) -从数组中删除重复值.
Examples:
>
SELECTarray_distinct(
array(
1,
2,
3,
null,
3));
[
1,
2,
3,
null]
array_except
array_except(array1, array2) -返回array1中的元素数组,但不返回array2中的元素数组,不重复.
Examples:
>
SELECTarray_except
(
array(1, 2, 3),
array(1, 3, 5));
[2]
array_intersect
array_intersect(array1, array2) -返回array1和array2交叉点中的元素数组,不重复.
Examples:
>
SELECTarray_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:
>
SELECTarray_max(
array(
1,
20,
null,
3));
20
array_min
array_min(array) -返回数组中的最小值。将跳过空元素。
Examples:
>
SELECTarray_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:
>
SELECTarray_remove(
array(
1,
2,
3,
null,
3),
3);
[
1,
2,
null]
array_repeat
array_repeat(element, count) -返回包含元素计数次数的数组.
Examples:
>
SELECTarray_repeat(
'123',
2);
[
"123",
"123"]
array_sort
array_sort(array) -按升序排列输入数组。输入数组的元素必须是可排序的。空元素将放在返回数组的末尾.
Examples:
>
SELECTarray_sort(
array(
'b',
'd',
null,
'c',
'a'));
[
"a",
"b",
"c",
"d",
null]
array_union
array_union(array1, array2) -返回array1和array2并集中元素的数组,不重复.
Examples:
>
SELECTarray_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:
>
SELECTarrays_overlap(
array(
1,
2,
3),
array(
3,
4,
5));
true
arrays_zip
arrays_zip(a1, a2, ...) -返回结构的合并数组,其中第n个结构包含输入数组的所有第n个值.
Examples:
>
SELECTarrays_zip(
array(
1,
2,
3),
array(
2,
3,
4));
[{
"0":
1,
"1":
2},{
"0":
2,
"1":
3},{
"0":
3,
"1":
4}]
>
SELECTarrays_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)(代码片段