我正在将代码从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行)

  ask by Alter translate from so

本文未有回复,本站智能推荐:

2回复

Spark如何在java中通过数据集调用UDF

Java 中以下 Scala 代码片段的确切翻译是什么? 请填写下面缺少的语句java eg 注意:注册 udf 然后使用 selectExpr 调用对我有用,但我需要上面显示的类似内容。 工作示例:
2回复

Spark 将数据集转换为 RDD

我有一个 Dataset[String] 并且需要转换为 RDD[String]。 怎么样? 注意:我最近从 spark 1.6 迁移到 spark 2.0。 我的一些客户期待 RDD,但现在 Spark 给了我数据集。
1回复

适用于Java的Scala编译器

我是否需要添加Scala编译器Jar文件才能在java(Eclipse)中运行Spark Sql? 是否需要以下两个jar文件? 如果我使用的是Java,那么为什么需要使用Scala编译器?
1回复

Spark数据集获取与整数列的标题相同的数据

我正在尝试通过创建 spark 数据集在 java 中通过 spark 读取 hive 表。 所有带有字符串标题的列的数据都被正确读取,但对于整数标题,spark 获取与标题相同的列数据。 该表是基于镶木地板文件创建的外部表。 我的蜂巢表: 文件内容: 正确创建了 Hive 表, 但是
3回复

如何有效生成填充随机值的 Spark 数据集?

我需要一个填充随机值或生成值的任意大小的Dataset<Double> 。 似乎可以通过实现RDD并在compute方法中生成值来完成。 有更好的解决方案吗?
1回复

Spark数据集-读取CSV并写入空输出

我有一个输入文件test-reading.csv 我编写了以下源代码,以获取我所面临问题的最小,完整和可验证的示例。 有一个ReadingRecord类用于读取CSV文件,而WritingRecord用于写入输出。 顺便说一句,现在它们几乎是相同的,但是在实际程序中却大不相同,因
1回复

Spark:应用foreach后我的数据集没有更新

我有一个这样的数据集: Dataset<MyModel> ds ,并且MyModel有一个字段name (以及更多字段)。 我尝试这样做: 但我发现在返回的ds , name字段没有更新。 我想知道我该怎么做才能让ds得到更新?
2回复

如何将 Map 列添加到 Spark 数据集?

我有一个 Java Map变量,比如Map<String, String> singleColMap 。 我想将此Map变量作为 Spark 2.2 (Java 1.8) 中的新列值添加到数据集。 我尝试了下面的代码,但它不起作用: 有人可以帮忙吗?