返回信息流现在要实现这个样子的功能,
两个rdd中每一行都是一个int,
然后要一个rdd中每一行的int与另外一个rdd中所有行的int做个和
rdd1.map(a => {
rdd2.map(b => {
a += b
})
a
})
意思是上面代码的意思,但是上面代码在spark中会报错,所以要实现上面的那个意思,应该怎么整呢(备注rdd1和rdd2会在每次迭代后变化)
这是一条镜像帖。来源:北邮人论坛 / java / #60539同步于 2018/11/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
spark的一个问题
cc19931002
2018/11/30镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不实数据量大不大的问题,我的两个rdd每轮计算完成之后都会更新的,增加或者减少。。。所以基本不能靠广播变量
【 在 Mysry 的大作中提到: 】
你这肯定报错呀!数据量多大?不是特别大的话广播其中一个rdd?
实际业务逻辑很复杂,不是这儿简单加上。。。。我这儿简单做个加和只是说明问题
【 在 xxpxxxxp 的大作中提到: 】
: 我觉得吧,从效率上说,不应该先给rdd2求个sum,然后rdd1 map到_ + sum?
rdd1: rdd2:
2 7
3 8
4 9
这个键怎么给才能得到我想要的效果呢,就是rdd1的每一行与rdd2的每一行都要join上并且join完之后的结果按照键的取值,rdd1中的每一行得是要可以区分开的
【 在 airfan 的大作中提到: 】
: 不能转成键值对吗
rdd1.cartesian(rdd2).groupBy(a).aggregateByKey(xxx)
简单的计算优化可以通过partition的个数来控制。