R& Spark-Scala数据帧处理时间

时间:2018-04-04 21:49:58

标签: r apache-spark spark-dataframe apache-spark-mllib

我是Spark世界的新手,我的问题可能不适合很多人。但是,由于我的好奇心,我无法提出这个问题。

我有非常大的数据集,500,000行和2500列。在准备这个数据集时,我观察到了巨大的性能差异,同时为R& S Spark数据帧。基本上,Spark ML比R更快。这是一篇在互联网上发现的文章,一般来说它是众所周知的。 http://bigdata-madesimple.com/tools-in-the-data-armoury-r-vs-spark/

R代码段:下面的代码在2分钟内完成

for(columnName in 1:allNumericColumns){ 
     if(sum(is.na(dat_[,columnName])) > 0){
        dat_[which_,columnName] <- 0       
      }
}

Spark / Scala代码段:下面的代码需要数小时(超过4小时),

dat3_.schema.fields.filter(f => f.dataType == DoubleType).map(c => {
  if(dat3_.filter(col(c.name).isNull).count() > 0)
  {
    ///****Either
    dat3_ = dat3_.withColumn(c.name + "_isNull", when(col(c.name).isNull, 1).otherwise(0))
    ///***OR
    dat3_ = dat3_.withColumn(c.name, when(col(c.name).isNull, 0).otherwise(col(c.name)))
  }
})

经过研究我发现昂贵的操作是:

if(dat3_.filter(col(c.name).isNull).count() > 0)

但是,如果我只是简单地用0替换null。完成数据转换仍需要一个小时。

dat3_.schema.fields.filter(f => f.dataType == DoubleType).map(c => {
      dat3_ = dat3_.withColumn(c.name, when(col(c.name).isNull, 0).otherwise(col(c.name)))
    })

我仍然不清楚为什么Spark数据帧存在巨大的性能或处理问题。

如果有人有任何想法请清除我的怀疑。

1 个答案:

答案 0 :(得分:0)

如果您没有任何云服务器可以使用并且您在本地工作,则使用spark会增加您的计算时间。请查看此视频

https://www.youtube.com/watch?v=oItFZfzqqMY&index=32&list=LLcCiCxO6SjbBzEzz7zAhNsQ&t=0s