我怎么可以拆分数据帧与在Scala和SPARK相同的列值dataframes [英] How can I split a dataframe into dataframes with same column values in SCALA and SPARK

查看:449
本文介绍了我怎么可以拆分数据帧与在Scala和SPARK相同的列值dataframes的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Scala,我怎么可以拆分数据帧分成多个数据框(无论是数组或集合)具有相同的列值。
比如我想要分割以下数据框中:

  ID率国家
1 24 AL
2 35 MN
3 46 FL
4 34 AL
5 78 MN
6 99 FL

数据组1

  ID率国家
1 24 AL
4 34 AL

数据组2

  ID率国家
2 35 MN
5 78 MN

数据组3

  ID率国家
3 46 FL
6 99 FL


解决方案

您可以收集独有的状态值,简单地映射在结果数组:

  VAL状态= df.select(国家)。distinct.collect.flatMap(_。toSeq)
VAL byStateArray = states.map(州=> df.where($国家< = GT;状态))

或来图:

  VAL byStateMap =声明
    .MAP(州=>(州 - > df.where($国家< = GT;状态)))
    .toMap

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:

data set 1

ID  Rate    State
1   24  AL  
4   34  AL

data set 2

ID  Rate    State
2   35  MN
5   78  MN

data set 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))

or to map:

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

这篇关于我怎么可以拆分数据帧与在Scala和SPARK相同的列值dataframes的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆