Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spark-如何获得随机唯一行_Java_Apache Spark_Dataset - Fatal编程技术网

Java Spark-如何获得随机唯一行

Java Spark-如何获得随机唯一行,java,apache-spark,dataset,Java,Apache Spark,Dataset,我需要一种方法,从一个数据集中获得一些x数量的唯一的随机行。我尝试了dataset类的sample方法,但它有时会选择重复的行 数据集的示例方法: 您应该使用带有替换false的sample函数,例如,您可以使用: val sampledData=df.sample(withReplacement=false,0.5) 但这不能保证提供给定数据集总计数的一小部分。 为此,通过sample函数获取采样数据后,取采样数据的X实体。您应使用sample函数,并替换为false,例如,您可以使用: v

我需要一种方法,从一个数据集中获得一些x数量的唯一的随机行。我尝试了dataset类的
sample
方法,但它有时会选择重复的行

数据集的示例方法:


您应该使用带有替换false的sample函数,例如,您可以使用:

val sampledData=df.sample(withReplacement=false,0.5)
但这不能保证提供给定数据集总计数的一小部分。
为此,通过sample函数获取采样数据后,取采样数据的X实体。

您应使用sample函数,并替换为false,例如,您可以使用:

val sampledData=df.sample(withReplacement=false,0.5)
但这不能保证提供给定数据集总计数的一小部分。
为此,在通过sample函数获取采样数据后,获取采样数据的X实体。

带有withReplacement=>'false'的sample函数将始终拾取不同的行
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|
+----+----+-----+
+----+----+-----+

带有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|
+----+----+-----+
+----+----+-----+