我在一个DataFrame中有一列需要在Pyspark中选择3个随机值。请问有人能帮我吗?
+---+
| id|
+---+
|123|
|245|
| 12|
|234|
+---+
期望:
从该列中获取3个随机值的数组:
**output**: [123, 12, 234]
我在一个DataFrame中有一列需要在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)
如果您不想要一个 Row 对象的数组,以下是创建一个包含三个整数的数组的方法:
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]
这篇文章更详细地讨论了如何从DataFrame列中获取随机值。
df.select("id").limit(3).show()
吗? - mrsrinivasdf.select("id").rdd.takeSample(false, 3).collect()
- mrsrinivas