spark flatmap

spark flatmapflatMap算子,在java中,接收的参数是FlatMapFunction,我们需要自己定义FlatMapFunction的第二个泛型类型,即,代表了返回的新元素的类型      call()方法,返回的类型,不是U,而是Iterable,这里的U也与第二个泛型类型相同      flatMap其实就是,接收原始RDD中的每个元素,并进行各种逻辑的计算和处理,返回可以返回多个元素

大家好,又见面了,我是你们的朋友全栈君。

     flatMap算子,在java中,接收的参数是FlatMapFunction,我们需要自己定义FlatMapFunction的第二个泛型类型,即,代表了返回的新元素的类型
        call()方法,返回的类型,不是U,而是Iterable<U>,这里的U也与第二个泛型类型相同
        flatMap其实就是,接收原始RDD中的每个元素,并进行各种逻辑的计算和处理,返回可以返回多个元素

  flatmap 和map的操作,map可以完成的,flatmap也可以完成,但是flatmap能完成的,map能完成吗?好像不行,比如说我要根据传进来的数据生成两个某个类的子类,那么map就无能为力了。

public static void myFlatMap(){

        SparkConf conf=new SparkConf()

        .setMaster(“local”)

        .setAppName(“myFlatMap”);

        List<String> list=Arrays.asList(“hello 2016″,”goodbye 2015”);

        JavaSparkContext sc=new JavaSparkContext(conf);

        JavaRDD<String> listRdd=sc.parallelize(list);

        JavaRDD<String> listFlatMap=listRdd.flatMap(new FlatMapFunction<String, String> (){

            private static final long serialVersionUID = 1L;

            @SuppressWarnings(“rawtypes”)

            @Override

            public Iterable<String> call(String s) throws Exception {

                // TODO Auto-generated method stub

                return Arrays.asList(s.split(” “));

            }

        });

        listFlatMap.foreach(new VoidFunction<String>(){

            @Override

            public void call(String s) throws Exception {

                // TODO Auto-generated method stub

                System.out.println(“s:”+s);

            }

            

        });

    }

结算结果:

s:hello
s:2016
s:goodbye
s:2015

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136144.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号