将 JavaRDD<List<SomeClass>> 转换为 JavaRDD<SomeClass>

Convert JavaRDD<List<SomeClass>> to JavaRDD<SomeClass>

我有一个 class 对象列表的 JavaRDD。我想将它展平为 class 个对象的 JaveRDD,这样 JavaRDD<{1, 2, 3, 4}, {5, 6, 7}> 转到 JavaRDD<1, 2, 3, 4, 5, 6, 7>

在这个post 一种解决方案是

val newrdd = rdd.flatmap(line => line)

但是,line=>line 是 scala(我认为) 我试过了

rdd.flatmap(line-> line)

它给出错误

"no instance(s) of type variable(s) U exist so that List conforms to Iterator "

function you pass to flatMap 应该 return 一个 java.util.Iterator<T>,而不是 List<T>。这样做就足够了:

JavaRDD<SomeClass> newRdd = rdd.flatMap(List::iterator);