首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >简单的SparkR 1.6示例

简单的SparkR 1.6示例
EN

Stack Overflow用户
提问于 2016-10-19 06:43:50
回答 1查看 303关注 0票数 0

我正在努力让一个简单的sparkR示例启动并运行,但无法正常运行。我所要做的就是获取一个列表,并将其并行化,然后在SparkR中运行一个函数。我还没能找到一个简单的例子来在spark 1.6中做到这一点--似乎有很多方法可以做到这一点,但似乎没有一种方法有效。我正在尝试在sparkR控制台中运行以下代码:

代码语言:javascript
代码运行次数:0
运行
复制
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时得到的错误:

代码语言:javascript
代码运行次数:0
运行
复制
Error in as.list.default(X) : 
  no method for coercing this S4 class to a vector

我正在寻找的是一个非常简单的例子,它可以让这个工作--我已经使用了大量的pyspark,但还没能让这个工作与R一起工作。

EN

回答 1

Stack Overflow用户

发布于 2016-10-19 06:55:11

1.6以来,createDataFrame已重命名为as.DataFrame

这可以正确地在R中创建Spark DataFrame。

代码语言:javascript
代码运行次数:0
运行
复制
sdf <- as.DataFrame(sqlContext, list(1,1,1,1,1,3))

然而,这不是一个R对象。内置的R lapply适用于常规列表、数组、向量等。

在Spark中运行这段代码什么也得不到。您正在执行的计算未在集群中并行化。矩阵乘法是在一台机器上完成的。并且根本不使用Spark库。

下面是工作代码,例如

代码语言:javascript
代码运行次数:0
运行
复制
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是在Spark2.x中添加的,如果这是您试图使用的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40119294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档