本文介绍了在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中,如何将数据帧分割成具有相同列值的数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!