package com.huangyueran.spark.operator; import com.huangyueran.spark.utils.SparkUtils; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.FlatMapFunction; import org.apache.spark.api.java.function.VoidFunction; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * @category 与map类似,但每个输入的RDD成员可以产生0或多个输出成员 扁平化输出 * @author huangyueran * @time 2019-7-21 16:38:20 */ public class FlatMap { public static void main(String[] args) { JavaSparkContext sc = SparkUtils.getLocalSparkContext(FlatMap.class); flatMap(sc); } private static void flatMap(JavaSparkContext sc) { List<String> data = Arrays.asList("aa,bb,cc", "cxf,spring,struts2", "java,C++,javaScript"); JavaRDD<String> rddData = sc.parallelize(data); FlatMapFunction<String, String> flatMapFunction=new FlatMapFunction<String, String>() { @Override public Iterator<String> call(String s) throws Exception { List<String> list = Arrays.asList(s.split(",")); return list.iterator(); } }; JavaRDD<String> flatMapData = rddData.flatMap(flatMapFunction); flatMapData.foreach(new VoidFunction<String>() { @Override public void call(String v) throws Exception { System.out.println(v); } }); sc.close(); } }