我有一个文件列表,我想在没有 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
.rdd.toJavaRDD()
步骤之前。这是否可以一步完成,或者是否需要我将我的 JavaRDD 更改为 JavaRDD<List<My_Object>>
然后将其转换为 JavaRDD<My_Object>
?