[英]Spark Dataframe: How to aggregate both numerical and nominal columns
我正在使用Spark数据框并具有类似于以下的数据框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}
所以我想做类似的事情:
df.groupyBy("id").agg(sum("amount"),_?Seq?_("donor"))
聚合数字的总和很容易,但是我找不到一种将文本内容聚合为Sequence或Array(或任何类似的Iterable类型)的方法。 如何在Scala / Spark中执行此操作?
编辑:
我正在寻找一些基于Spark Dataframe或RDD的函数来收集字符串。 下面提到的collect_set
函数基于Hive, collect_set
我需要特定的依赖关系。 但是我在项目中根本没有使用Hive。
尝试:
df.groupyBy("id").agg(sum("amount"), collect_list("donor"))
要么
df.groupyBy("id").agg(sum("amount"), collect_set("donor"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.