简单SparkR 1.6示例



我正在努力使一个简单的sparkR示例启动并运行,但无法使其工作。我想做的就是获取一个列表,将其并行化,然后在SparkR中运行一个函数。我还没能找到一个简单的例子来说明如何在spark 1.6中做到这一点——似乎有很多方法可以做到这一点,但似乎没有一个是有效的。我正在尝试在sparkR控制台运行这个:

fxntest<- function(i){
  m = matrix(runif(4000*4000),4000)
  return(system.time(m %*% m))
}
a<-c(1,1,1,1,1,3)
b<-as.list(a)
sdf <- createDataFrame(sqlContext, b)
testtimes <- lapply(sdf, fxntest)
testtimelist <- collect(testtimes)
testtimelist

这是当调用lapply时我得到的错误:

Error in as.list.default(X) : 
  no method for coercing this S4 class to a vector

我要找的是一个非常简单的例子,得到这个工作-我已经使用了pyspark一个很好的数量,但还没有能够得到这个工作与r

createDataFrame1.6起更名为as.DataFrame

在r中正确地创建一个Spark DataFrame

sdf <- as.DataFrame(sqlContext, list(1,1,1,1,1,3))

但是,它不是R对象。内置R lapply适用于常规列表,数组,向量等。

在Spark中运行它没有任何好处。您正在执行的计算不是跨集群并行的。矩阵乘法是在一台机器上完成的。并且根本不使用Spark库。

下面是工作代码,例如
fxntest<- function(i){
  m = matrix(runif(4000*4000),4000)
  return(system.time(m %*% m))
}
testtimes <- lapply(list(1,1,1,1,1,3), fxntest)

注:spark.lapply是在Spark 2中添加的。X,如果这是你想用的函数。

相关内容

  • 没有找到相关文章

最新更新