SparkR:从R数据帧收集数据';我不能和RStudio一起工作

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

我尝试执行一个非常基本的Spark操作(
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