并行化不工作 sparkR

lor*_*d12 2 r apache-spark sparkr

当我运行以下代码时:

rdd <- lapply(parallelize(sc, 1:10), function(x) list(a=x, b=as.character(x)))
df <- createDataFrame(sqlContext, rdd)
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息说

Error in lapply(parallelize(sc, 1:10), function(x) list(a = x, b = as.character(x))) : 
  could not find function "parallelize"
Run Code Online (Sandbox Code Playgroud)

但是,我可以创建数据框:

library(magrittr)
library(SparkR)
library(rJava)
Sys.setenv(SPARK_HOME="C:\\Apache\\spark-1.6.0-bin-hadoop2.6") 

.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths())) 

library("SparkR", lib.loc="C:\\Apache\\spark-1.6.0-bin-hadoop2.6\\lib")
library(SparkR) 

sc <- sparkR.init(master="local")
sqlContext <- sparkRSQL.init(sc)
localDF <- data.frame(name=c("John", "Smith", "Sarah"), age=c(19, 23, 18))
df <- createDataFrame(sqlContext, localDF)
Run Code Online (Sandbox Code Playgroud)

parrelelize 不起作用的任何原因?

zer*_*323 5

火花 < 2.0

它不起作用,因为自从 SparkR (Spark 1.4.0) RDD API 的第一个正式版本不再公开可用。您可以查看SPARK-7230(在 SparkR 中为 Spark 1.4 将 RDD API 设为私有)以获取详细信息。

虽然可以使用内部 API(通过:::)访问其中一些方法,但您不应依赖它。除了一些例外,这些不再被当前的代码库使用或积极维护。更重要的是,存在多个不太可能解决的已知问题。

如果您对较低级别的 R 访问感兴趣,您应该遵循SPARK-7264 ) SparkR API for parallel functions) 和SPARK-6817(R 中的 DataFrame UDF)。

火花2.0+

Spark 2.0 引入了一组用于在 Spark 之上使用 R UDF的方法 ( dapply, gapply, lapply) DataFrame