【问题标题】:Creating a Spark Dataset in Java with a single column of increasing values在 Java 中使用单列递增值创建 Spark 数据集
【发布时间】:2021-01-28 16:35:39
【问题描述】:

Java 和 Spark 的新手在这里寻求帮助:

有没有办法创建一个包含从 1 到 n 递增值的单列数据集?

Dataset<Row> ds = ss.createDataSet("column-name", 1, 1000);

上面有点粗略,因为没有像createDataSet 这样的方法,但我正在寻找可以懒惰地创建ds 内容的方法。

【问题讨论】:

    标签: java apache-spark java-8 apache-spark-dataset


    【解决方案1】:

    假设你使用的是 java 8 +

    int n = 1000;
    List<Integer> intList = IntStream.range(1, n+1).boxed().collect(Collectors.toList());
    Encoder<Integer> integerEncoder = Encoders.INT();
    Dataset<Integer> primitiveDS = spark.createDataset(intList, integerEncoder);
    

    还请记住,当您尝试在 spark 中创建数据集时,您需要创建/传递一个自生成的数据列表,该列表完全在 driver 中生成。

    【讨论】:

    • 如果我理解正确,您的解决方案将在内存中创建intList,并在稍后懒惰地创建Dataset&lt;Integer&gt;。我正在寻找一种解决方案,它不会在内存中实现intList 列表,而是直接创建Dataset
    • 这在 spark 中基本上是不可能的。因为您要问的是执行者创建自己的一组递增整数。
    • Spark 需要对完整数据的引用。示例:在文件的情况下,它有一个参考和LOADS LAZILY。但在你的情况下,没有数据参考。你需要生成它。没有lazy generation的概念
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2019-05-04
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多