scala 从列A创建唯一值数组,其中列B在Sql.DataFrame中相同

new9mtju  于 2022-12-23  发布在  Scala
关注(0)|答案(1)|浏览(115)

我有一个sql.DataFrame

ID | Qualifier
-------------
A  |    "test"
A  |    "test2"

我想说的是:

ID | QualifierList
-------------
A  |    ["test", "test2"]

使用spark sql函数。
我似乎找不到任何方法与array_join()等任何帮助将不胜感激!
我使用的数据源比这个大得多,但是当我尝试array_join()时,我得到了Qualifier列中存在的值,但没有得到ID相同的值。

ru9i0ody

ru9i0ody1#

您可以使用groupBy函数,然后使用collect_list聚合函数。

import org.apache.spark.sql._
import spark.implicits._

val df = Seq(
  ("A", "test"),
  ("A", "test2")
).toDF("ID", "Qualifier")

val output = df.groupBy("ID").agg(collect_list("Qualifier").alias("QualifiersList"))

output.show
+---+--------------+                                                                                                                                                                                                                                                            
| ID|QualifiersList|                                                                                                                                                                                                                                                            
+---+--------------+                                                                                                                                                                                                                                                            
|  A| [test, test2]|                                                                                                                                                                                                                                                            
+---+--------------+

相关问题