pyspark-如何从数据框列获取随机值



我在数据框中有一个列,我需要在Pyspark中选择3个随机值。有人可以帮助我吗?

+---+
| id|
+---+
|123| 
|245| 
| 12|
|234|
+---+

欲望:

带有3个随机值的数组从该列获取:

**output**: [123, 12, 234]

您可以先使用rand()函数以随机顺序订购:

 df.select('id').orderBy(rand()).limit(3).collect()

有关rand()功能的更多信息,请查看Pyspark.sql.functions.rand。

这是另一种可能更具性能的方法。

您可以使用此代码获取三个随机行:

df.rdd.takeSample(False, 3)

,如果您不想要一组行对象,则是如何使用三个整数创建数组:

list(map(lambda row: row[0], df.rdd.takeSample(False, 3)))

df.select('id').orderBy(F.rand()).limit(3)将生成此物理计划:

== Physical Plan ==
TakeOrderedAndProject(limit=3, orderBy=[_nondeterministic#38 ASC NULLS FIRST], output=[id#32L])
+- *(1) Project [id#32L, rand(-4436287143488772163) AS _nondeterministic#38]

本文更详细地讨论了从数据框列获取随机值。

相关内容

  • 没有找到相关文章

最新更新