在地图中执行地图减少时的空集合

时间:2018-04-11 09:51:26

标签: visual-studio scala ubuntu-16.04

我遇到一个火花作业,并将错误消息作为空集合退出。

java.lang.UnsupportedOperationException: empty collection

我已经放大了两行导致了这个问题。

sum_attribute1 = inputRDD.map(_.attribute1).reduce(_+_)
sum_attribute2 = inputRDD.map(_.attribute2).reduce(_+_)`

.map和.distinct.count的其他行很好。 我想打印出inputRDD.map(attribute1)和inputRDD.map(_。attribute2)来查看reduce之前的map。

我以为我可以定义类似

的内容
sum_attribute1 = inputRDD.map(_.attribute1)

但是当我尝试编译代码时,它显示错误:

[error]  found   : org.apache.spark.rdd.RDD[Int]
[error]  required: Long
[error] sum_attribute1 = inputRDD.map(_.attribute1)
[error]                              ^

我的attribute1被定义为Int但是当我尝试将其定义为Long时,它给了我另一个错误。

我是朝着正确的方向前进的吗? 如何在地图之后和减少之前打印数据? 空集合可能存在什么问题? _.attribute1和reduce(_ + _)中的下划线是什么意思?

1 个答案:

答案 0 :(得分:1)

我不认为你正朝着正确的方向前进,我会专注于下面的元素:

我建议您先学习一点scala。对于您的一个具体问题,请阅读about that usage of _

对于你的另一个问题,reduce不能用于空集合,我建议使用fold,因为它支持空集合。