必须将主 url 设置为您的配置(AWS 上的 Spark scala)
Posted
技术标签:
【中文标题】必须将主 url 设置为您的配置(AWS 上的 Spark scala)【英文标题】:A master url must be set to your configuration (Spark scala on AWS) 【发布时间】:2016-10-02 16:39:16 【问题描述】:这是我通过 intellij 写的。我计划最终编写更大的 spark scala 文件。
无论如何,我将它上传到我制作的 AWS 集群上。 "master"
行,第 11 行是 "master("local")"
。我遇到了这个错误
第二张图是AWS运行失败时返回的错误。我将 第 11 行 更改为 "yarn"
而不是 local
(查看第一张图片了解其当前状态)
它仍然返回相同的错误。我手动上传时输入了以下标志
--steps Type=CUSTOM_JAR,Name="SimpleApp"
两周前它起作用了。我的朋友做了几乎和我一模一样的事情。我不确定为什么它不起作用。
我正在寻找简短的解释和答案。看来我需要更多关于 spark 工作原理的知识。
我正在使用亚马逊 EMR。
【问题讨论】:
'第 11 行是 "master("local")"。我遇到了这个错误'。在图像上它是“纱线” - 如果它具有误导性,你为什么要添加图像...... 请复制代码部分并删除快照图像 @Ashwin Iyer 我刚刚添加了示例如何将 master 设置为 SparkConf 【参考方案1】:我认为在第 9 行,您正在使用 spark 1.6.x 和旧版本中的“旧方式”方法创建 SparkContext - 您需要在默认 配置文件中设置 master >(通常是位置conf/spark-defaults.conf
)或将其传递给spark-submit(在new SparkConf()
中是必需的)...
在第 10 行,您正在使用 SparkSesion 创建“火花”上下文,这是在 spark 2.0.0
中的方法。所以在我看来你的问题是行号。 9 我认为您应该删除它并使用 SparkSesion 或为SparkContext
设置所需的配置以防万一您需要sc
。
你可以通过sparkSession.sparkContext();
访问sparkContext
如果您仍想使用SparkConf
,您需要以编程方式定义master:
val sparkConf = new SparkConf()
.setAppName("spark-application-name")
.setMaster("local[4]")
.set("spark.executor.memory","512m");
或在conf/spark-defaults.conf
中使用声明性方法
spark.master local[4]
spark.executor.memory 512m
或者只是在运行时:
./bin/spark-submit --name "spark-application-name" --master local[4] --executor-memory 512m your-spark-job.jar
【讨论】:
【参考方案2】:尝试使用以下代码:
val spark = SparkSession.builder().master("spark://ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com:xxxx").appName("example").getOrCreate()
您需要提供到您的 aws 集群的正确链接。
【讨论】:
以上是关于必须将主 url 设置为您的配置(AWS 上的 Spark scala)的主要内容,如果未能解决你的问题,请参考以下文章