火花提交.scala文件

Cod*_*joy 5 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 
Run Code Online (Sandbox Code Playgroud)

这将在spark上执行我的代码,并在完成后弹出到外壳中。

现在,我试图在集群上运行它,我认为我需要使用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 
Run Code Online (Sandbox Code Playgroud)

但是它不喜欢.scala文件,因此必须将其编译为类吗?scala代码是一个简单的scala文件,其中定义了几个帮助程序类,可以说没有真正的主类。我看不到他的帮助文件,但也许我丢失了它,我可以只是提交文件还是必须以某种方式给它上课?从而更改我的Scala代码?

我也将其添加到我的scala代码中:

从这里去了

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


val sc = new SparkContext(conf)  
Run Code Online (Sandbox Code Playgroud)

对此:

val sc = new SparkContext(new SparkConf().setMaster("spark://192.20.0.71:7077")
Run Code Online (Sandbox Code Playgroud)

shr*_*ama 6

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

  1. 无需修改scala文件

只需使用带有-i标志的spark shell :

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

  1. 修改scala文件以包含主要方法

一种。编译:

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

b。提交到您的集群:

/usr/lib/spark/bin/spark-submit --class <qualified class name> --master <> .


小智 4

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

有关完整说明,请参阅快速入门指南的自包含应用程序部分https://spark.apache.org/docs/latest/quick-start.html