如何将数据帧分割成具有相同列值的数据帧

如何将数据帧分割成具有相同列值的数据帧

本文介绍了在SCALA和SPARK中,如何将数据帧分割成具有相同列值的数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Scala,如何将dataFrame分割成具有相同列值的多个dataFrame(不管是数组还是集合)。
例如我想拆分以下DataFrame:

Using Scala, how can I split dataFrame into multiple dataFrame (be it array or collection) with same column value.For example I want to split the following DataFrame:

ID  Rate    State
1   24  AL
2   35  MN
3   46  FL
4   34  AL
5   78  MN
6   99  FL

to:

数据集1

ID  Rate    State
1   24  AL
4   34  AL

数据集2

ID  Rate    State
2   35  MN
5   78  MN

数据集3

ID  Rate    State
3   46  FL
6   99  FL


推荐答案

您可以收集唯一的状态值,并简单地映射到结果数组:

You can collect unique state values and simply map over resulting array:

val states = df.select("State").distinct.collect.flatMap(_.toSeq)
val byStateArray = states.map(state => df.where($"State" <=> state))

或映射:

val byStateMap = states
    .map(state => (state -> df.where($"State" <=> state)))
    .toMap

另请参阅

这篇关于在SCALA和SPARK中,如何将数据帧分割成具有相同列值的数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 04:55