如何从PySpark DataFrame获取随机行?

如何从PySpark DataFrame中获取随机行?我只看到方法sample(),它以一个分数作为参数.将此分数设置为1 / numberOfRows会导致随机结果,有时我不会得到任何行.

在RRD上有一个方法takeSample(),它将您希望样本包含的元素数作为参数.我知道这可能很慢,因为你必须计算每个分区,但有没有办法在DataFrame上得到这样的东西?

您只需在RDD上调用takeSample即可:

df = sqlContext.createDataFrame(
    [(1, "a"), (2, "b"), (3, "c"), (4, "d")], ("k", "v"))
df.rdd.takeSample(False, 1, seed=0)
## [Row(k=3, v='c')]

如果你不想收集,你可以简单地采取更高的分数和限制:

df.sample(False, 0.1, seed=0).limit(1)
翻译自:https://stackoverflow.com/questions/34003314/how-take-a-random-row-from-a-pyspark-dataframe

转载注明原文:如何从PySpark DataFrame获取随机行?