spark 的groupby

原创 2016年06月01日 14:21:41

      其实我一直很不明白的是,为什么有groupByKey了还要有groupBy,今天被一位同事问到了怎么对rdd分组的时候,这个疑问算是彻底惹恼我了,我一定要搞清楚这东西怎么用的,嗯,对比一下groupByKey()函数,无参数,pairRdd之际调用即可返回根据分组好的内容,如JavaPairRDD<Long, Iterable<CemCircuitExpierence>>,但是这个必须是

JavaPairRDD<Long, CemCircuitExpierence>类型,也就是说必须是元组的key,value形式。但是Rdd也有一个grouyBy的方法,这个需要传入参数,但是传入什么参数以及返回什么参数,这个我就比较迷惑了,可能是带有强烈的个人情绪在其中,所以一直没弄清楚这个东西,直到我看到了scala的写法是直接将要分组的字段作为参数传进入的时候我忽然就恍然了,java的第二个参数就是要分组的字段的类型,这个我也是在看到第二个参数的返回值的时候才决定要试一下的,结果果然是这样子,groupBy分组后的结果根本就不用理的,都是<u,iterable<传入的类型>>,u就是你要分组的字段的类型。直接上代码吧:


   JavaPairRDD<Long, Iterable<CemCircuitExpierence>> expGroup1=expRdd.groupBy(new Function<CemCircuitExpierence,Long>(){

            private static final long serialVersionUID = 1L;

            @Override
            public Long call(
                    CemCircuitExpierence exp) throws Exception {
                // TODO Auto-generated method stub
                return exp.getIndicator_id();
            }

        });


结果跟下面的是一致的:

JavaPairRDD<Long, CemCircuitExpierence> expPair=expRdd.mapToPair(new PairFunction<CemCircuitExpierence,Long,CemCircuitExpierence>(){

            private static final long serialVersionUID = 1L;

            @Override
            public Tuple2<Long, CemCircuitExpierence> call(
                    CemCircuitExpierence exp) throws Exception {
                return new Tuple2<Long,CemCircuitExpierence>(exp.getIndicator_id(),exp);
            }
            
        });
        JavaPairRDD<Long, Iterable<CemCircuitExpierence>> expGroup=expPair.groupByKey();


查看源代码,好像也没看出个所以然来。



相关文章推荐

Spark API 详解/大白话解释 之 groupBy、groupByKey

groupBy(function) function返回key,传入的RDD的各个元素根据这个key进行分组val a = sc.parallelize(1 to 9, 3) a.groupBy(x...

【Spark系列2】reduceByKey和groupByKey区别与用法

在spark中,我们知道一切的操作都是基于RDD的。在使用中,RDD有一种非常特殊也是非常实用的format——pair RDD,即RDD的每一行是(key, value)的格式。这种格式很像Pyth...

Spark API 详解/大白话解释 之 groupBy、groupByKey

转载:http://blog.csdn.net/guotong1988/article/details/50556871 groupBy(function)  functi...

Spark的Dataset操作(三)-分组,聚合,排序

spark sql的分组聚合操作,包括groupBy, agg, count, max, avg, sort, orderBy等函数示例

Spark RDD中Transformation的groupBy、partitionBy、cogroup详解

先对每个RDD中的数据进行分组,如: V1,V2会分为一组, 形成K,依次类推。 对RDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区, 否...

scala实战之SparkSQL应用实例(单表count和groupby多来源表join等)

前面几篇博客说了如何读取mysql数据库中的表到DataFrame中以及如何将结果写入到mysql中 今天这个实例主要实现应用sparksql完成用户日志数据的提取并转换成DataFrame(我们将其...

SparkSQL中DataFrame Operations操作(select、filter、groupBy、count)

代码+图文讲解SparkSQL DataFrame操作,select、filter、groupBy、count操作

Spark SQL 实现 group_concat

Spark SQL 实现 group_concat 环境:Spark 2.0.1  以下貌似需要至少Spark 1.6支持,未实测 表结构及内容: +-------+---+ | name|a...

Spark使用小结:Java版的GroupByKey示例

Spark Java版的GroupByKey示例 感觉reduceByKey只能完成一些满足交换率,结合律的运算,如果想把某些数据聚合到一些做一些操作,得换groupbykey 比如下面:我想把相...

Java实现GroupBy/分组TopN功能

介绍在Java 8 的Lambda(stream)之前,要在Java代码中实现类似SQL中的group by分组聚合功能,还是比较困难的。这之前Java对函数式编程支持不是很好,Scala则把函数式编...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spark 的groupby
举报原因:
原因补充:

(最多只允许输入30个字)