explode和explode\u outer有什么区别?两个函数的文档相同,两个函数的示例也相同:
SELECT explode(array(10, 20));
10
20
和
SELECT explode_outer(array(10, 20));
10
20
Spark源表明这两种功能有区别
expression[Explode]("explode"),
expressionGeneratorOuter[Explode]("explode_outer")
但是expressiongeneratorouter与expression相比有什么效果呢?
1条答案
按热度按时间wlp8pajw1#
explode
通过忽略数组中的null或空值,为数组或Map列中的每个元素创建一行explode_outer
返回数组或Map中的所有值,包括null或空。例如,对于以下Dataframe-
id | name | likes
1 | Luke | baseball
1 | Luke | soccer
id | name | likes
1 | Luke | baseball
1 | Luke | soccer
2 | Lucy | null
SELECT explode(col1) from values (array(10,20)), (null)
+---+
|col|
+---+
| 10|
| 20|
+---+
SELECT explode_outer(col1) from values (array(10,20)), (null)
+----+
| col|
+----+
| 10|
| 20|
|null|
+----+