Spark Dataframe:如何聚合数字和名义列

时间:2016-10-03 01:15:29

标签: scala apache-spark dataframe spark-dataframe

我正在使用Spark Dataframes并且数据框import os, sys, time, shutil, threading ... self.threadA = threading.Thread( target=self.PLAY, args=() ) self.threadB = threading.Thread(target=self.DOWNLOAD, args=() ) self.threadA.start() self.threadB.start() while True: ## UI command = raw_input("Enter a command > ") 与此类似:

df

我想一次性聚合我的数据帧并获得此输出:

id: String | amount: Double | donor: String
--------------------------------------------
1          | 50             | Mary
2          |100             | Michael
1          | 60             | Minnie
1          | 20             | Mark
2          | 55             | Mony

所以我想做点什么:

id: String | amount: Double | donor: Seq[String] -------------------------------------------- 1 |130 | {Mary,Minnie,Mark} 2 |155 | {Michael, Mony}

汇总数字的总和很简单,但我找不到将文本内容聚合为序列或数组(或任何类似的Iterable类型)的方法。我怎样才能在scala / spark中做到这一点?

编辑:

我正在寻找一些基于Dataframe或RDD的函数来进行字符串的收集。作为下面提到的df.groupyBy("id").agg(sum("amount"),_?Seq?_("donor"))的函数是基于Hive的,我需要特定的依赖关系。但我在项目中根本没有使用Hive。

1 个答案:

答案 0 :(得分:2)

尝试:

Redis

df.groupyBy("id").agg(sum("amount"), collect_list("donor"))