1601365 发表于 2018-3-13 14:32 这里说下核心代码,首先排序,然后相同的相加,不同的跳出。那么如何相加,可以通过mapPartitions实现.如下x是每一个元素。下面假设只有一个字段。多个字段同理。假如一个字段:i,然后i不断的记录获取总之,然后除以个数,最后得到平均值。 var rdd2 = rdd1.mapPartitions{ x => { | var result = List[Int]() | var i = 0 | while(x.hasNext){ | i += x.next() | } | result.::(i).iterator | }} 楼主可以试下。如果不行,就贴出舒俱来。 |
楼主需要首先明白map的含义,一般通过map是对里面的元素做处理,楼主那样做,从实际意义来讲是没有任何用的。 map本身里面是有for循环的。 你传入的是一个集合,但是经过map后,操作的却是里面的每个元素,你再把里面的元素组合为集合,里面既有元素,又有集合。所以肯定会产生问题。 |
本帖最后由 hyj 于 2018-3-13 12:54 编辑 妈呀,这程序写成这样了。从头到尾,都有语法错误。你想干嘛吧。说说你的思路。 |