如何在本地向 spark master 运行 提交作业

How to submit jobs to spark master running locally

我正在使用 R 和 spark 运行 一个测试 spark 的简单示例。

我在本地有一个 spark master 运行ning,使用以下方法:

spark-class org.apache.spark.deploy.master.Master

我可以在 http://localhost:8080/

查看状态页面

代码:

system("spark-submit --packages com.databricks:spark-csv_2.10:1.0.3 --master local[*]")

suppressPackageStartupMessages(library(SparkR)) # Load the library

sc <- sparkR.session(master = "local[*]")

df <- as.DataFrame(faithful)

head(df)

现在 运行 可以正常执行以下操作(代码保存为 'sparkcode'):

Rscript sparkcode.R 

问题:

但是创建了一个新的 spark 实例,我希望 R 使用现有的主实例(应该将其视为已完成的工作 http://localhost:8080/#completed-app

P.S:使用 Mac OSX、spark 2.1.0 和 R 3.3.2

一些事情:

  • 如果您使用独立集群,请使用正确的 url,应该是 sparkR.session(master = "spark://hostname:port")。主机名和端口均取决于配置,但标准端口为 7077,主机名应默认为 hostname。这是主要问题。
  • 避免直接使用spark-class。这就是 $SPARK_HOME/sbin/ 脚本的用途(如 start-master.sh)。没有关键的,但为您处理繁琐的工作。
  • Standalone master 只是资源管理器。您还必须启动工作节点 (start-slave*)。
  • 通常使用 bin/spark-submit 更好,尽管在这里应该没有太大关系。
  • spark-csv 在 Spark 2.x 中不再是必需的,即使是 Spark 2.1 默认也使用 Scala 2.11。更不用说 1.0.3 非常旧了(比如 Spark 1.3 左右)。