繁体   English   中英

Spark Dataframe:如何汇总数字和标称列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM