Spark 展平数据帧

Spark flattening out dataframes

开始使用 spark 我想知道如何 flatmapexplode 数据框。

它是使用 df.groupBy("columName").count 创建的,如果我收集它,它具有以下结构:

 [[Key1, count], [Key2, count2]] 

但我更喜欢

Map(bar -> 1, foo -> 1, awesome -> 1)

实现这样的目标的正确工具是什么?平面图,爆炸还是其他?

上下文:我想使用spark-jobserver。它似乎只提供有意义的结果(例如工作 json 序列化)以防我以后一种形式提供数据ml

我假设您在 DataFrame 上调用 collectcollectAsList?那将 return 和 Array[Row] / List[Row]

如果是这样 - 将它们转换为映射的最简单方法是使用底层 RDD,将其记录映射到键值元组并使用 collectAsMap:

def counted = df.groupBy("columName").count()
// obviously, replace "keyColumn" and "valueColumn" with your actual column names
def result = counted.rdd.map(r => (r.getAs[String]("keyColumn"), r.getAs[Long]("valueColumn"))).collectAsMap()

result 具有预期的类型 Map[String, Long]