Spark数据框展开数组后,如何自定义展开列的列名?
解决Spark DataFrame数组列展开并重命名列的问题
你已经成功用explode函数把数组列展开成多行数据了,只需要给展开后的列加上别名,就能把默认的col改成你想要的employee啦,这里有两种简单的实现方式:
方式一:使用alias()方法
直接在explode调用后链式调用alias()指定列名:
df.select($"person", explode($"employees").alias("employee")).show()
方式二:使用as()方法
as()和alias()的作用完全一致,也是用来给列重命名:
df.select($"person", explode($"employees").as("employee")).show()
运行上面任意一段代码后,你就能得到期望的结果:
+------+--------+ |person|employee| +------+--------+ | Mary| 1| | Mary| 2| | Mary| 3| | John| 4| | John| 5| | John| 6| +------+--------+
额外小技巧:用SQL语法实现
如果你更习惯写SQL语句,也可以先把DataFrame注册成临时视图,再通过SQL完成展开和重命名:
df.createOrReplaceTempView("people") spark.sql("SELECT person, explode(employees) AS employee FROM people").show()
内容的提问来源于stack exchange,提问作者user152468
相关产品推荐
相关产品推荐

