java - Spark - 如何获取随机唯一行
问题描述
我需要一种方法来从数据集中获取一些 x 数量的随机行,这些行是唯一的。我尝试sample
了数据集类的方法,但它有时会选择重复的行。
数据集的示例方法:
解决方案
withReplacement=>'false' 的示例函数总是会选择不同的行df1.sample(false, 0.1).show()
样本(带替换的布尔值,双分数)
考虑下面的例子:
其中 withReplacement => 'true' 给出了可以通过计数验证的重复行,但 withReplacement => 'false' 没有。
import org.apache.spark.sql.functions._
val df1 = ((1 to 10000).toList).zip(((1 to 10000).map(x=>x*2))).toDF("col1", "col2")
// df1.sample(false, 0.1).show()
println("Sample Count for with Replacement : " + df1.sample(true, 0.1).count)
println("Sample Count for with Out Replacement : " + df1.sample(false, 0.1).count)
df1.sample(true, 0.1).groupBy($"col1", $"col2").count().filter($"count">1).show(5)
df1.sample(false, 0.1).groupBy($"col1", $"col2").count().filter($"count">1).show(5)
Sample Count for with Replacement : 978
Sample Count for with Out Replacement : 973
+----+-----+-----+
|col1| col2|count|
+----+-----+-----+
|7464|14928| 2|
|6080|12160| 2|
|6695|13390| 2|
|3393| 6786| 2|
|2137| 4274| 2|
+----+-----+-----+
only showing top 5 rows
+----+----+-----+
|col1|col2|count|
+----+----+-----+
+----+----+-----+
推荐阅读
- symfony - 在 Doctrine2 中是否有关于在抽象类上使用 @Entity 注释或将抽象类放入鉴别器映射中的任何禁忌?
- r - str_replace in a data frame?
- html - Flexbox, line break and stretching
- python - Python: trying to copy files from a directory into another directory
- python - Apache Superset 上的多个数据库访问?
- vba - VBA登录sage50
- python - 根据另一列计算一列中的元素-Python
- javascript - How to find adjacent polygons in leaflet
- r - Any way to plot multiple barplots on a map?
- dll - 全局 asa 和 VB6 DLL 中的溢出问题