spark-submit for .scala文件

时间:2017-12-05 22:28:47

标签: scala apache-spark

我一直在运行一些测试spark scala代码,可能是使用spark-shell做错事的一种不好的方式:

spark-shell --conf spark.neo4j.bolt.password=Stuffffit --packages neo4j-contrib:neo4j-spark-connector:2.0.0-M2,graphframes:graphframes:0.2.0-spark2.0-s_2.11 -i neo4jsparkCluster.scala 

这将在spark上执行我的代码并在完成时弹出到shell中。

既然我正在尝试在群集上运行它,我想我需要使用spark-submit,我认为这将是:

spark-submit --conf spark.neo4j.bolt.password=Stuffffit --packages neo4j-contrib:neo4j-spark-connector:2.0.0-M2,graphframes:graphframes:0.2.0-spark2.0-s_2.11 -i neo4jsparkCluster.scala 

但它不喜欢.scala文件,不知何故它必须编译成一个类? scala代码是一个简单的scala文件,其中定义了几个辅助类,可以说没有真正的主类。我没有看到他帮助文件,但也许我错过了它,我可以只是火花提交文件或我必须以某种方式给它上课?这样改变我的scala代码?

我确实将此添加到我的scala代码中:

从这个

开始
val conf = new SparkConf.setMaster("local").setAppName("neo4jspark")


val sc = new SparkContext(conf)  

对此:

val sc = new SparkContext(new SparkConf().setMaster("spark://192.20.0.71:7077")

3 个答案:

答案 0 :(得分:5)

有两种快速而肮脏的方法:

  1. 不修改scala文件
  2. 只需使用带有firstvals = 2*y[0] - y[half_window:0:-1] lastvals = 2*y[-1] - y[-2:-half_window-2:-1] 标志的火花外壳:

    -i

    1. 修改scala文件以包含主要方法
    2. 一个。编译:

      $SPARK_HOME/bin/spark-shell -i neo4jsparkCluster.scala

      湾将其提交到您的群集:

      scalac -classpath <location of spark jars on your machine> neo4jsparkCluster

答案 1 :(得分:4)

您需要使用sbt打包scala应用程序,并在您的build.sbt文件中包含Spark作为依赖项。

有关完整说明https://spark.apache.org/docs/latest/quick-start.html

,请参阅快速入门指南的自包含应用程序部分

答案 2 :(得分:0)

您可以查看以下Spark的Hello World示例,该示例将您的应用程序打包为已经提到的@ zachdb86。

spark-hello-world