Spark 并行化到一个函数,该函数返回一个列表并将所有列表连接在一起成为一个单一的列表

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

我有一个文件列表,我想在没有 spark.read API 的情况下读取这些文件。它效率较低,但由于我的数据设置方式,我想自己读取它并返回一个对象列表。

我的函数是一个返回列表的可序列化函数

public final class getContents implements
        SerializableFunction<String, List<My_Object>> {

    @Override
    public List<My_Object> apply(String s) {
        //Do reading here and convert to My_Object
        //return a List<My_Object>
    }
}

分发此文件列表的我的 Spark 代码:

JavaSparkContext javaSparkContext = new JavaSparkContext(sparkSession.sparkContext());
JavaRDD<My_Object> listJavaRDD = javaSparkContext
                .parallelize(paths, paths.size())
                .map(new DeserializeCsvContentsFunction<>()::apply)
                //Convert to a singular list here?
                .rdd().toJavaRDD();

我的 .map 步骤的返回类型是 List。我似乎无法找到一种快速的方法来将此 List> 在地图步骤之后转换为 List

.rdd.toJavaRDD()
步骤之前。这是否可以一步完成,或者是否需要我将我的 JavaRDD 更改为
JavaRDD<List<My_Object>>
然后将其转换为
JavaRDD<My_Object>

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