展平Spark数据帧和名称列

时间:2018-05-14 14:19:22

标签: scala apache-spark dataframe

如何在spark数据帧中取消一个数组,以便结果数据帧为原始数组中的每个值包含一行?

示例:

scala> df.show()
+---------+------+
|employees|person|
+---------+------+
|[1, 2, 3]|  Mary|
|[4, 5, 6]|  John|
+---------+------+

预期结果:

+---------+------+
|employee |person|
+---------+------+
|1        |  Mary|
|2        |  Mary|
|3        |  Mary|
|4        |  John|
|5        |  John|
|6        |  John|
+---------+------+

这就是我的尝试:

df.select($"person", explode($"employees")).show()

+------+---+
|person|col|
+------+---+
|  Mary|  1|
|  Mary|  2|
|  Mary|  3|
|  John|  4|
|  John|  5|
|  John|  6|
+------+---+

如何将生成的爆炸列命名为" employee"?

2 个答案:

答案 0 :(得分:1)

  

如何将生成的爆炸列命名为“employee”?

df.select($"person", explode($"employees").alias("employee")).show()

df.select($"person", explode($"employees").as("employee")).show()

答案 1 :(得分:1)

您可以使用withColumn作为

创建新列
df.withColumn("employee", explode($"employees")).show()