Scala 用类标签的平均值填充数据集,导致筛选操作崩溃
我有一个包含数值的csv文件Scala 用类标签的平均值填充数据集,导致筛选操作崩溃,scala,apache-spark,Scala,Apache Spark,我有一个包含数值的csv文件 val row = withoutHeader.map{ line => { val arr = line.split(',') for (h <- 0 until arr.length){ if(arr(h).trim == ""){ val abc = avgrdd.filter {case ((x,y),z) => x == h && y == arr(dependent_col_inde
val row = withoutHeader.map{
line => {
val arr = line.split(',')
for (h <- 0 until arr.length){
if(arr(h).trim == ""){
val abc = avgrdd.filter {case ((x,y),z) => x == h && y == arr(dependent_col_index).toDouble} //crashing here
arr(h) = //imputing with the value above
}
}
arr.mkString(",")
}
}
谢谢 您正试图在另一个RDD转换中执行RDD转换。请记住,不能在另一个RDD转换中使用RDD,这将导致错误 处理方法如下:
转换为相应类型的成对RDD
(在您的示例中为Long)。缓存它
顶部计算avgrdd
。这应该是成对的RDD
RDD和avgrdd连接在一起-这样,每行都有一个结构
map
,将缺少的Value
替换为AvgValue
avgrdd
仅与只包含缺少值的RDD连接,然后在这两部分之间进行并集。如果缺少一小部分值,则速度会更快
col1,dependent_col_index
4,1
8,0
,1
21,1
21,0
,1
25,1
,0
34,1
mean for class 1 is 84/4 = 21 and for class 0 is 29/2 = 14.5
Required Output
4,1
8,0
21,1
21,1
21,0
21,1
25,1
14.5,0
34,1