Spark和YARN。 SparkPi示例如何使用第一个参数作为主URL?

时间:2014-05-31 11:45:29

标签: scala apache-spark yarn

我刚刚开始学习Spark,我试图通过将代码复制到新项目并构建jar来复制SparkPi示例。 SparkPi的来源是:https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala

我有一个正在运行的YARN群集(运行CDH 5.0.1),我已经上传了火花装配jar并在SPARK_JAR中设置了它的hdfs位置。

如果我运行此命令,示例有效:

$ SPARK_CLASSPATH=/usr/lib/spark/examples/lib/spark-examples_2.10-0.9.0-cdh5.0.1.jar /usr/lib/spark/bin/spark-class org.apache.spark.examples.SparkPi yarn-client 10

但是,如果我将源复制到一个新项目并构建一个jar并运行相同的命令(使用不同的jar和classname),我会收到以下错误:

$ SPARK_CLASSPATH=Spark.jar /usr/lib/spark/bin/spark-class spark.SparkPi yarn-client 10
Exception in thread "main" org.apache.spark.SparkException: A master URL must be set in your configuration
    at org.apache.spark.SparkContext.<init>(SparkContext.scala:113)
    at spark.SparkPi$.main(SparkPi.scala:9)
    at spark.SparkPi.main(SparkPi.scala)

不知何故,第一个参数在我的版本中没有作为SparkContext中的master传递,但它在这个例子中工作正常。

查看SparkPi代码,似乎只期望一个数字参数。

那么有什么关于Spark示例jar文件拦截第一个参数并以某种方式设置spark.master属性是什么?

1 个答案:

答案 0 :(得分:2)

这是最近的更改 - 您在第一种情况下运行旧代码并在第二种情况下运行新代码。

以下是更改:https://github.com/apache/spark/commit/44dd57fb66bb676d753ad8d9757f9f4c03364113

我认为现在这将是正确的命令:

/usr/lib/spark/bin/spark-submit Spark.jar --class spark.SparkPi yarn-client 10