必须将主 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)的主要内容,如果未能解决你的问题,请参考以下文章

AWS 数据加密知识点

在项目中如何把http的请求换成https

AWS 上的专用网络

如何将多个传出IP地址分配给AWS上的单个实例?

redshift 不适用于本地 aws 配置文件凭据吗?

[AWS-S3] POST 上的预签名 URL 被 CORS 阻止,尽管 CORS 配置启用它