Apache Spark DataFrame在GroupBy之后应用自定义操作

时间:2017-03-15 10:10:18

标签: scala apache-spark spark-dataframe

我有2列说ID, value我的类型为Int,值类型为List[String]

我正在重复ID以使其独一无二我现在在My DataFrame上应用GroupBy("id")我的问题是我想要将值相互追加并且值列必须是不同的。

示例: - 我有一个像

这样的数据
+---+---+
| id| v |
+---+---+
|  1|[a]|
|  1|[b]|
|  1|[a]|
|  2|[e]|
|  2|[b]|
+---+---+

我希望我的输出像这样

+---+---+--
| id| v   |
+---+-----+
|  1|[a,b]|
|  2|[e,b]|

我试过这个: -

  

val uniqueDF = df.groupBy(“id”)。agg(collect_list(“v”))   uniqueDf.map {row => (row.getInt(0),   row.getAsSeq [字符串] .toList.distinct)}

groupBy()agg()之后说或我不想应用地图操作时,我可以这样做吗

感谢

1 个答案:

答案 0 :(得分:0)

val uniqueDF = df.groupBy("id").agg(collect_set("v"))

Set将只有唯一值