scala - .scala 文件的 spark-submit

标签 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")

最佳答案

有两种快速而肮脏的方法可以做到这一点:

  • 不修改scala文件

  • 只需将 Spark shell 与 -i 一起使用旗帜:
    $SPARK_HOME/bin/spark-shell -i neo4jsparkCluster.scala
  • 修改 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/

    相关文章:

    java - JSoup 摆脱正文中的换行符

    java - 从 Java 调用 Scala "val function"会出现错误

    scala - 在 Scala 上开发 Web 应用程序

    scala - 如何对具有空值的行进行模式匹配?

    azure - 如何将 Apache Spark 作业提交到 Azure HDInsight 上的 Hadoop YARN

    scala - 为什么启动我的 Spark Streaming 应用程序会给出 "Container exited with a non-zero exit code 50"?

    scala - 线程 # 将 _ GB 的排序数据溢出到磁盘

    python - rdd.collect() 上 PySpark Worker 中的 ModuleNotFoundError

    scala - Spark streaming 和 Dstream 如何工作?

    sql-server - 从sql server导入数据到spark local