Apache Spark 从 Dataframe 中随机选择行

c90pui9n  于 2023-06-06  发布在  Apache
关注(0)|答案(1)|浏览(210)

我有三个 Dataframe ,我已经加入到一起,以创建一个单一的 Dataframe 。

df_1 = df_1.withColumn('idx', monotonically_increasing_id())
df_2 = df_2.withColumn('idx', monotonically_increasing_id())
df_3 = df_3.withColumn('DATE', to_timestamp('DATE')) \
        .withColumn('idx', monotonically_increasing_id())

merged_df = df_1.join(df_2, ['idx']).join(df_3, ['idx']).drop('idx')

我想从中检索一组随机行。
我不对 Dataframe 进行任何排序,但当我使用limit

random_choices_df = merged_df.limit(10)
random_choices_df.show()

show函数总是以相同的顺序显示相同的项目。
如何检索一组随机行?我认为limit应该这样做,但由于某种原因,它保留了项目的顺序。我在一台机器上运行。

wrrgggsh

wrrgggsh1#

您可以使用Sample函数从df中随机取样,然后限制所需的行数。

>>> df=spark.range(10000).sample(0.1).limit(10).show()
+---+
| id|
+---+
|  0|
|  4|
|  7|
| 13|
| 19|
| 36|
| 46|
| 82|
| 91|
|102|
+---+
>>> df=spark.range(10000).sample(0.1).limit(10).show()
+---+
| id|
+---+
|  0|
|  6|
| 10|
| 11|
| 24|
| 28|
| 37|
| 49|
| 50|
| 72|
+---+

相关问题