我是java8和spark的新手,我正在尝试在java中执行简单的flatmap转换程序,但我在倒数第二行的flatmap转换中遇到了一些错误 Arrays.asList(e.split(" ")));
,错误是
类型不匹配:无法将
List<String>
转换为Iterator<String>
这个问题应该怎么解决呢? 提前感谢。
import java.util.Arrays;
import java.util.List;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.commons.lang.StringUtils;
public class FlatMapExample {
public static void main(String[] args) throws Exception {
SparkConf sparkConf = new
SparkConf().setMaster("local").setAppName("filter
transformation");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
// Parallelized with 2 partitions
JavaRDD<String> rddX = sc.parallelize(
Arrays.asList("spark rdd example", "sample example"),
2);
// map operation will return List of Array in following case
JavaRDD<String[]> rddY = rddX.map(e -> e.split(" "));
List<String[]> listUsingMap = rddY.collect();
for(int i = 0; i < listUsingMap.size(); i++)
{
System.out.println("list.."+StringUtils.join(listUsingMap.get(i)));
}
//System.out.println("listUsingMap..."+listUsingMap.collect());
// flatMap operation will return list of String in following case
JavaRDD<String> rddY2 = rddX.flatMap(e -> Arrays.asList(e.split(" ")));
List<String> listUsingFlatMap = rddY2.collect();
}
}
List.iterator()
是Java中List
接口的一个方法,它返回一个迭代器对象,可以用于遍历List
中的元素。 - Elliott Frisch