我有一个数据框,我想随机化数据框中的行。我尝试通过给出 1 的分数来对数据进行采样,但这不起作用(有趣的是,这在 Pandas 中有效)。
它在 Pandas 中有效,因为在本地系统中采样通常是通过混洗数据来解决的。另一方面,Spark 通过对数据执行线性扫描来避免洗牌。这意味着 Spark 中的采样仅随机化样本的成员而不是顺序。
您可以订购DataFrame
通过一列随机数:
from pyspark.sql.functions import rand
df = sc.parallelize(range(20)).map(lambda x: (x, )).toDF(["x"])
df.orderBy(rand()).show(3)
## +---+
## | x|
## +---+
## | 2|
## | 7|
## | 14|
## +---+
## only showing top 3 rows
但它是:
- 昂贵 - 因为它需要完全洗牌,而这是您通常想要避免的。
- 可疑 - 因为 a 中的值的顺序
DataFrame
在重要的情况下,你不能真正依赖它,因为DataFrame
不支持索引,不收集的话相对来说没什么用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)