PySpark 数据框示例说明

PySpark dataframe sample description

我有一个包含 500 万行的 PySpark DataFrame,我想获得对随机选择的子集的描述。

当我生成相同分数的两个不同样本时,我得到了相同的结果。

sample_1 = df.sample(fraction=0.03, seed=None)

sample_1.describe().show(100)
+-------+--------------------+
|summary|            row_name|
+-------+--------------------+
|  count|              160933|
|   mean|2.921313376194685...|
| stddev| 3.50815577432219E13|
|    min|            10111444|
|    max|            99955723|
+-------+--------------------+

sample_2 = df.sample(fraction=0.03, seed=None)

sample_2.describe().show(100)

+-------+--------------------+
|summary|            row_name|
+-------+--------------------+
|  count|              160933|
|   mean|2.921313376194685...|
| stddev| 3.50815577432219E13|
|    min|            10111444|
|    max|            99955723|
+-------+--------------------+
sample_1 == sample_2
False

两个不同的dataframe的描述怎么会一样呢?

SparkContext().version = '2.4.4'

我最初的猜测是 seed 是一样的。

如果您不关心可重复性,请为每次采样使用随机种子。 如果您想要再现性,请为每次采样使用一个恒定但不同的种子。

关于相等性,Spark 比较数据帧的方式可能在幕后发生了一些事情。

当你 运行 像这样的东西时会发生什么:

sample_1.except(sample_2).isEmpty