SparkR:从R数据帧收集数据';我不能和RStudio一起工作
我尝试执行一个非常基本的Spark操作(SparkR:从R数据帧收集数据';我不能和RStudio一起工作,r,apache-spark,rstudio,sparkr,R,Apache Spark,Rstudio,Sparkr,我尝试执行一个非常基本的Spark操作(head()),以收集从R数据帧创建的Spark数据帧的输出。 我想在warn-clientdeploy模式下执行此操作。我在集群的所有节点上安装了R 当我通过以下方式从RStudio运行此应用程序时: Sys.setenv(SPARK_HOME = "/usr/local/spark160") library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) sc
head()
),以收集从R数据帧创建的Spark数据帧的输出。
我想在warn-client
deploy模式下执行此操作。我在集群的所有节点上安装了R
当我通过以下方式从RStudio
运行此应用程序时:
Sys.setenv(SPARK_HOME = "/usr/local/spark160")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sc <- sparkR.init(master="yarn-client", appName = "Spark Test",
sparkHome = "/usr/local/spark160/")
sqlContext <- sparkRSQL.init(sc)
df <- createDataFrame(sqlContext, iris)
head(df)
Sys.setenv(SPARK_HOME=“/usr/local/spark160”)
库(SparkR,lib.loc=c(file.path(Sys.getenv(“SPARK_HOME”),“R”,“lib”))
sc问题不是RStudio,问题是当您开始执行以下操作时(请在终端上尝试所有操作)
$R
Sys.setenv(SPARK_HOME=“/usr/local/spark160”)
库(SparkR,lib.loc=c(file.path(Sys.getenv(“SPARK_HOME”),“R”,“lib”))
sc问题在于在R脚本中包含master=“纱线客户端”
通常,有两(2)种不同的方式来运行SparkR脚本:
以交互方式(例如通过RStudio)或作为“纯”R脚本(即使用source()
命令);在这种情况下,您的代码应该如下所示:
Sys.setenv(SPARK_HOME = "/usr/local/spark160")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sc <- sparkR.init(appName = "Spark Test", sparkHome = "/usr/local/spark160/") # no 'master' argument
sqlContext <- sparkRSQL.init(sc)
df <- createDataFrame(sqlContext, iris)
print(head(df))
# Sepal_Length Sepal_Width Petal_Length Petal_Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
sparkR.stop()
现在,如果您将此脚本另存为sparkr_test.R
,那么您应该以
$ spark-submit --master yarn-client --driver-memory 2g /path/to/sparkr_test.R
[...]
Sepal_Length Sepal_Width Petal_Length Petal_Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
还要注意,driver memory
参数也应该与spark submit
一起使用,而不是在脚本中
(我已经写了一本关于SparkR的更详细的指南)
Sys.setenv(SPARK_HOME = "/usr/local/spark160")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sc <- sparkR.init(appName = "Spark Test", sparkHome = "/usr/local/spark160/") # no 'master' argument
sqlContext <- sparkRSQL.init(sc)
df <- createDataFrame(sqlContext, iris)
print(head(df))
# Sepal_Length Sepal_Width Petal_Length Petal_Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa
sparkR.stop()
sc <- sparkR.init(appName = 'Spark Test',
sparkEnvir = list(spark.executor.cores='2',
spark.executor.instances='2'))
$ spark-submit --master yarn-client --driver-memory 2g /path/to/sparkr_test.R
[...]
Sepal_Length Sepal_Width Petal_Length Petal_Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa