我从一个 csv 文件创建了一个数据集<Row>,然后从中创建了一个数据集<JeuDeDonnees>。我如何像在流中一样一个接一个地阅读 JeuDeDonnees 对象?

问题描述 投票:0回答:0

我创建了一个:

// 'datasets' is the name the provider gave for that source
Dataset<Row> datasets = session.read().schema(schema).format("csv").load("datasets.csv");

然后一个:

Dataset<JeuDeDonnees> jeuxDeDonnees = datasets.map((MapFunction<Row, JeuDeDonnees>)row -> 
   { /* [...mappings...] */ return new JeuDeDonnees(...); }, Encoders.bean(JeuDeDonnees.class));
}

那是我应用程序的数据管理部分。

我愿意为我的服务提供对所有数据的访问权限(对于最终用户)。
我不能返回完整的

List<JeuDeDonnees>
Spark提取,当然:它会溢出一切。

我愿意:

  1. 要么一个一个返回

    JeuDeDonnees
    对象,一个
    Stream

    Stream<JeuDeDonnees> getNext()
    ,如果可能的话?
    但是,我如何将它链接到它的底层
    jeuxDeDonnees
    Spark 数据集,一种 Spark 在返回数据时保持相当平滑的方式?

  2. 要么回来

    List<JeuDeDonnees> getNext(50)

    但是,我认为该机制的实施会更加复杂。因为我应该避免告诉Spark这次从偏移x开始”(50
    jeuxDeDonnees
    ),因为这样做会花费很多,对于每个偏移移动,(如果可能的话,我我不确定)。

解决我的问题的正确方法是什么?

java apache-spark stream
© www.soinside.com 2019 - 2024. All rights reserved.