【发布时间】:2020-07-23 04:12:44
【问题描述】:
我是 Spark 的新手,希望随机分割数据。
假设我有这样的数据:
+------+-------+-------+-------+
| Col1 | Col2 | Col3 | Col3 |
+------+-------+-------+-------+
| A | 0.532 | 0.234 | 0.145 |
| B | 0.242 | 0.224 | 0.984 |
| A | 0.152 | 0.753 | 1.413 |
| C | 0.149 | 0.983 | 0.786 |
| D | 0.635 | 0.429 | 0.683 |
| E | 0.938 | 0.365 | 0.328 |
| C | 0.293 | 0.956 | 0.963 |
| D | 0.294 | 0.234 | 0.298 |
| E | 0.294 | 0.394 | 0.928 |
| D | 0.294 | 0.258 | 0.689 |
| A | 0.687 | 0.666 | 0.642 |
| C | 0.232 | 0.494 | 0.494 |
| D | 0.575 | 0.845 | 0.284 |
+------+-------+-------+-------+
但是,col1 有更多不同的组/类别。并且我想通过Col1随机分配,意思是Col A的所有记录,如果Col A如此随机选择,将转到RDD1。
- 30% 去一个 RDD
- 另外 30% 的人去另一个 RDD
- 另外 30% 用于第三个 RDD
- 最后 10% 用于第四个 RDD
当我们说 30% 时,我们的意思是 Col1 的唯一值的 30%。所以,如果我的 Col1 标签是:[A,B,C,D,E,F,G,H,I,J],这些标签中的 3 个和所有相关的行都进入第一个分组,等等。
我可以想象一系列: .map() 函数,其中我发出一个元组(Col1_Label,[0 到 3 之间的随机值,每个概率为 0.3、0.3、0.3、0.1]),然后进行后续过滤.
有没有更简单的方法和方法可以让我分配种子来复制结果?
【问题讨论】:
标签: python apache-spark random pyspark