2017-04-12 76 views
0

假設我有以下數據框:如何獲取DataFrame中每個鍵的所有不同元素?

scala> val dataset = Seq((0, "hello"), (0, "world"), (0, "hello"), (1, "foo"), (1, "bar")).toDF("id", "text") 
dataset: org.apache.spark.sql.DataFrame = [id: int, text: string] 

scala> dataset.show() 
+---+-----+ 
| id| text| 
+---+-----+ 
| 0|hello| 
| 0|world| 
| 0|hello| 
| 1| foo| 
| 1| bar| 
+---+-----+ 

如何獲得每個id獨特text?即,我想做類似的事情:

dataset.groupBy("id").agg(distinct('text)) 

我必須創建一個UserDefinedAggregateFunction嗎?我最終希望每個id的清單。

回答

4

您可以使用collect_set

dataset.groupBy("id").agg(collect_set($"text")).show 
+---+-----------------+ 
| id|collect_set(text)| 
+---+-----------------+ 
| 1|  [bar, foo]| 
| 0| [world, hello]| 
+---+-----------------+ 
相關問題