我有一个数据帧,我想在数据帧中随机化行 . 我尝试通过给出1的一小部分对数据进行采样,但是没有用(有趣的是这在熊猫中起作用) .
它适用于Pandas,因为在本地系统中取样通常是通过改组数据来解决的 . 另一方面,Spark通过对数据执行线性扫描来避免混乱 . 这意味着Spark中的采样仅随机化样本成员而不是订单 .
您可以通过一列随机数订购 DataFrame :
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
但它是:
昂贵 - 因为它需要完全洗牌,这是你通常想要避免的东西 .
可疑 - 因为 DataFrame 中的值顺序不是你可以真正依赖的非平凡情况,并且因为 DataFrame 不支持索引,所以没有收集就相对没用 .
1 回答
它适用于Pandas,因为在本地系统中取样通常是通过改组数据来解决的 . 另一方面,Spark通过对数据执行线性扫描来避免混乱 . 这意味着Spark中的采样仅随机化样本成员而不是订单 .
您可以通过一列随机数订购
DataFrame
:但它是:
昂贵 - 因为它需要完全洗牌,这是你通常想要避免的东西 .
可疑 - 因为
DataFrame
中的值顺序不是你可以真正依赖的非平凡情况,并且因为DataFrame
不支持索引,所以没有收集就相对没用 .