【发布时间】:2017-09-19 09:43:14
【问题描述】:
这是输入 Spark 数据帧。根据“代码类型”,我需要将此数据帧拆分为子数据帧,如下所示
val dsTotal = fr.toDF("Key","Code")
dsTotal.show()
--------------
|key | Code |
--------------
|200 | DS |
|300 | CP |
|400 | DS |
|76 | OR |
|45 | CP |
|34 | DS |
|33 | OR |
|200 | DS |
--------------
我在同一个超级数据帧上反复使用过滤器选项来创建子数据帧。有没有其他更好的方法来生成子数据帧
val ds1 = dsTotal.filter(col("Code").equalTo("CP"))
ds1.show()
--------------
|key | Code |
--------------
|45 | CP |
|300 | CP |
--------------
val ds2 = dsTotal.filter(col("Code").equalTo("DS"))
ds2.show()
--------------
|key | Code |
--------------
|200 | DS |
|400 | DS |
|200 | DS |
|34 | DS |
--------------
val ds3 = dsTotal.filter(col("Code").equalTo("OR"))
ds3.show()
--------------
|key | Code |
--------------
|76 | OR |
|33 | OR |
--------------
【问题讨论】:
-
接下来你打算用你的数据框做什么?如果只需要保存,请在 DataFrameWriter 上使用
partitionBy。详情请见stackoverflow.com/questions/42645836/…。 -
我只想将数据帧拆分为子数据帧,以便在后续编码中使用这些子数据帧。
标签: scala apache-spark apache-spark-sql