我在DataFrame中有一列我需要在Pyspark中选择3个随机值。有人可以帮我吗?
+---+
| id|
+---+
|123|
|245|
| 12|
|234|
+---+
欲望:
从该列获取具有3个随机值的数组:
**output**: [123, 12, 234]
答案 0 :(得分:1)
答案 1 :(得分:0)
这是另一种可能更有效的方法。
您可以使用以下代码获取三个随机行:
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]
此post详细讨论了如何从DataFrame列中获取随机值。