我一直在运行一些测试 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")
最佳答案
有两种快速而肮脏的方法可以做到这一点:
只需将 Spark shell 与
-i
一起使用旗帜:$SPARK_HOME/bin/spark-shell -i neo4jsparkCluster.scala
一种。编译:
scalac -classpath <location of spark jars on your machine> neo4jsparkCluster
湾将其提交到您的集群:
/usr/lib/spark/bin/spark-submit --class <qualified class name> --master <> .
关于scala - .scala 文件的 spark-submit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47663695/