Scala Spark展平数据帧
spark入门我想知道如何Scala Spark展平数据帧,scala,apache-spark,apache-spark-sql,flatmap,spark-jobserver,Scala,Apache Spark,Apache Spark Sql,Flatmap,Spark Jobserver,spark入门我想知道如何flatmap或分解数据帧 它是使用df.groupBy(“columName”).count创建的,如果我收集它,它具有以下结构: [[Key1, count], [Key2, count2]] 但我更喜欢吃像这样的东西 Map(bar -> 1, foo -> 1, awesome -> 1) 实现这种目标的正确工具是什么?平面图,爆炸还是别的 上下文:我想使用spark jobserver。如果我以后一种形式提供数据,它似乎只能提供有意义
flatmap
或分解数据帧
它是使用df.groupBy(“columName”).count创建的,如果我收集它,它具有以下结构:
[[Key1, count], [Key2, count2]]
但我更喜欢吃像这样的东西
Map(bar -> 1, foo -> 1, awesome -> 1)
实现这种目标的正确工具是什么?平面图,爆炸还是别的
上下文:我想使用spark jobserver。如果我以后一种形式提供数据,它似乎只能提供有意义的结果(例如,一个有效的json序列化)。我假设您正在数据帧上调用collect
或collectAsList
?这将返回一个数组[Row]
/列表[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
的typeMap[String,Long]
与预期一致。不幸的是(尽管格式现在与WordCount示例相同,但我仍然没有收到JSON,而是收到我的映射…”“我仍然没有收到JSON,而是收到我的映射”…你是什么意思?在哪里?你正在通过服务器的REST API运行作业(例如,使用curl
)还是在作业本身中运行main?如果是后者,当然你会得到map而不是JSON,当你调用一个返回map
的方法时,它返回一个map
,这没有什么神奇的。字数返回{“result”:{“a”:2,“b”:2,“see”:1,“c”:1}“结果”:“我的工作地图(1364767200000->1.951741400412122625E15、138057840000->6.9480992806496976E16)”