分享

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

1601365 发表于 2018-3-13 10:34:52 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 4 10205
跪求大神们带领小渣渣入门spark。编写应用程序时候使用的是parallellize方法,传入的对象明明是List(Vector)类型的,但是在指定vector下标时出现application does not take parameters错误。一直没想明白,还请大神多多指教。具体内容见附图所示
a.png

已有(4)人评论

跳转到指定楼层
hyj 发表于 2018-3-13 12:53:23
本帖最后由 hyj 于 2018-3-13 12:54 编辑

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

使用道具 举报

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

使用道具 举报

1601365 发表于 2018-3-13 14:32:33
hyj 发表于 2018-3-13 12:53
妈呀,这程序写成这样了。从头到尾,都有语法错误。你想干嘛吧。说说你的思路。

数据格式是下面图中的内容,其中第一列(即“1”和“2”)作为标签,后面其余列都为特定的测量参数,主要想把相同标签下的每种参数测量值加起来求平均值,也就是说,下图中从第二列开始,按标签将对应列加起来求平均值。
b.png
回复

使用道具 举报

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
     | }}

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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条