Pyspark-如何从数据帧列获取随机值

Pyspark-如何从数据帧列获取随机值,pyspark,spark-dataframe,pyspark-sql,Pyspark,Spark Dataframe,Pyspark Sql,我在一个数据帧中有一列,我需要在Pyspark中选择3个随机值。有人能帮我吗 +---+ | id| +---+ |123| |245| | 12| |234| +---+ 愿望: 从该列获取具有3个随机值的数组: **output**: [123, 12, 234] 您可以先使用rand()函数以随机顺序进行排序: df.select('id').orderBy(rand()).limit(3).collect() 有关rand()函数的更多信息,请查看。这里有另一种可能更有效的方

我在一个数据帧中有一列,我需要在Pyspark中选择3个随机值。有人能帮我吗

+---+
| id|
+---+
|123| 
|245| 
| 12|
|234|
+---+
愿望:

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

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

您可以先使用
rand()
函数以随机顺序进行排序:

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

有关
rand()
函数的更多信息,请查看。

这里有另一种可能更有效的方法

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

df.rdd.takeSample(False,3)
如果您不想要行对象数组,下面介绍如何创建包含三个整数的数组:

list(映射(lambda行:行[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]

这将更详细地讨论从数据帧列获取随机值。

您可以执行
df.select(“id”).limit(3).show()
?它应该是随机的
df.select(“id”).rdd.takeSample(false,3).collect()