
[英]Replicating a row from a Dataset n times in Apache Spark using Java
[英]Java-callable n-Sampler for Spark Dataset
我正在将代码从Python迁移到Java,并希望为Dataset<Row>
构建n-Sampler。 这有点令人沮丧,我最终作弊,并根据其他帖子对其进行了非常低效的Scala功能。 然后,我从Java代码运行该函数,但即使这样也没有用
N样本行为:
-从数据集中随机选择N行
-无重复(无替换)
当前解决方案(断)
import scala.util.Random
object ScalaFunctions {
def nSample(df : org.apache.spark.sql.Dataset[org.apache.spark.sql.Row], n : Int) : org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = {
//inefficient! Shuffles entire dataframe
val output = Random.shuffle(df).take(n)
return output.asInstanceOf[org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]]
}
}
错误信息
Error:(6, 25) inferred type arguments [org.apache.spark.sql.Row,org.apache.spark.sql.Dataset] do not conform to method shuffle's type parameter bounds [T,CC[X] <: TraversableOnce[X]]
val output = Random.shuffle(df).take(n)
Error:(6, 33) type mismatch;
found : org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]
required: CC[T]
val output = Random.shuffle(df).take(n)
我是Java和Scala的新手,所以即使我了解shuffle函数似乎并不喜欢Datasets,也不知道如何解决它。
-虚拟啤酒,如果您的解决方案不涉及对一小部分n样本(250)进行改组整个数据帧(对我来说,这可能像4M行)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.