1 apache-spark apache-spark-sql
我是 Spark 编程新手。我正在尝试用空行爆炸 DataFrame 的列。我认为爆炸函数简单来说,为数组中的每个元素创建额外的行。但结果不同。
我无法理解分解的 DataFrame 背后的逻辑。有人可以解释一下下面的例子吗?我想了解这个结果的根本原理/原因。为什么空数组在数据框中被视为空?
//inputDataFrame
+---+------+----------+
|age| name|occupation|
+---+------+----------+
| []|Harish| developer|
+---+------+----------+
df.withColumn("age",explode(col("age")))
//DataFrame with age column exploded
+---+----+----------+
|age|name|occupation|
+---+----+----------+
+---+----+----------+
// expected DataFrame
+---+------+----------+ +----+------+----------+
|age| name|occupation| |age | name|occupation|
+---+------+----------+ (or)+----+------+----------+
| |Harish| developer| |null|Harish| developer|
+---+------+----------+ +----+------+----------+
Run Code Online (Sandbox Code Playgroud)
EDIT1:根据 Chandan,我发现这个堆栈问题Spark sql how toexplode without Losing null Values并且可以理解可用于 Spark2 的爆炸 API。但我找不到关于为什么删除该行的正确解释。
这就是explode api 的行为。如果你想获得所需的输出,请使用explode_outer
df.withColumn("age",explode_outer(col("age")))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4123 次 |
| 最近记录: |