如何将元素追加到 Spark Dataframe 的数组列?

2024-01-02

假设我有以下数据框:

scala> val df1 = Seq("a", "b").toDF("id").withColumn("nums", array(lit(1)))
df1: org.apache.spark.sql.DataFrame = [id: string, nums: array<int>]

scala> df1.show()
+---+----+
| id|nums|
+---+----+
|  a| [1]|
|  b| [1]|
+---+----+

我想将元素添加到数组中nums列,以便我得到类似以下内容:

+---+-------+
| id|nums   |
+---+-------+
|  a| [1,5] |
|  b| [1,5] |
+---+-------+

有没有办法使用.withColumn()DataFrame 的方法?例如。

val df2 = df1.withColumn("nums", append(col("nums"), lit(5))) 

我浏览了 Spark 的 API 文档,但找不到任何可以让我执行此操作的内容。


import org.apache.spark.sql.functions.{lit, array, array_union}

val df1 = Seq("a", "b").toDF("id").withColumn("nums", array(lit(1)))
val df2 = df1.withColumn("nums", array_union($"nums", lit(Array(5))))
df2.show

+---+------+
| id|  nums|
+---+------+
|  a|[1, 5]|
|  b|[1, 5]|
+---+------+

The array_union()自 Spark 2.4.0 于 2018 年 11 月 2 日发布以来添加,即您提出问题 7 个月后,:) 请参阅https://spark.apache.org/news/index.html https://spark.apache.org/news/index.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将元素追加到 Spark Dataframe 的数组列? 的相关文章

随机推荐