1

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

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

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

但我宁愿有类似的东西

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

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

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

4

1 回答 1

2

我假设您正在调用collectcollectAsList在 DataFrame 上?那将返回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]预期的类型。

于 2016-04-11T07:04:28.137 回答