新手求助,刚开始编写程序,出现application does not take parameters错误

查看数: 10399 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-3-13 10:34

正文摘要:

跪求大神们带领小渣渣入门spark。编写应用程序时候使用的是parallellize方法,传入的对象明明是List(Vector)类型的,但是在指定vector下标时出现application does not take parameters错误。一直没想明白,还请大 ...

回复

langke93 发表于 2018-3-13 20:22:17
1601365 发表于 2018-3-13 14:32
数据格式是下面图中的内容,其中第一列(即“1”和“2”)作为标签,后面其余列都为特定的测量参数,主要 ...

这里说下核心代码,首先排序,然后相同的相加,不同的跳出。那么如何相加,可以通过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
     | }}

楼主可以试下。如果不行,就贴出舒俱来。

langke93 发表于 2018-3-13 13:47:40
楼主需要首先明白map的含义,一般通过map是对里面的元素做处理,楼主那样做,从实际意义来讲是没有任何用的。
map本身里面是有for循环的。
你传入的是一个集合,但是经过map后,操作的却是里面的每个元素,你再把里面的元素组合为集合,里面既有元素,又有集合。所以肯定会产生问题。
hyj 发表于 2018-3-13 12:53:23
本帖最后由 hyj 于 2018-3-13 12:54 编辑

妈呀,这程序写成这样了。从头到尾,都有语法错误。你想干嘛吧。说说你的思路。
关闭

推荐上一条 /2 下一条