wer*_*ner 1 apache-spark apache-spark-sql
是什么区别爆炸和explode_outer?这两个函数的文档是相同的,两个函数的示例也相同:
SELECT explode(array(10, 20));
10
20
Run Code Online (Sandbox Code Playgroud)
和
SELECT explode_outer(array(10, 20));
10
20
Run Code Online (Sandbox Code Playgroud)
的火花源表明,有两个功能之间的差
expression[Explode]("explode"),
expressionGeneratorOuter[Explode]("explode_outer")
Run Code Online (Sandbox Code Playgroud)
但是与expression相比,expressionGeneratorOuter的效果是什么?
explode
通过忽略数组中的空值或空值,为数组或映射列中的每个元素创建一行,而explode_outer
返回数组或映射中的所有值,包括空值或空值。
例如,对于以下数据帧-
id | name | likes
_______________________________
1 | Luke | [baseball, soccer]
2 | Lucy | null
Run Code Online (Sandbox Code Playgroud)
explode
给出以下输出 -
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
Run Code Online (Sandbox Code Playgroud)
而explode_outer
给出以下输出 -
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
2 | Lucy | null
Run Code Online (Sandbox Code Playgroud)
id | name | likes
_______________________________
1 | Luke | [baseball, soccer]
2 | Lucy | null
Run Code Online (Sandbox Code Playgroud)
返回
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
Run Code Online (Sandbox Code Playgroud)
尽管
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
2 | Lucy | null
Run Code Online (Sandbox Code Playgroud)
返回
SELECT explode(col1) from values (array(10,20)), (null)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2050 次 |
最近记录: |