【问题标题】:Running Scala Spark Jobs on Existing EMR在现有 EMR 上运行 Scala Spark 作业
【发布时间】:2017-11-17 05:03:33
【问题描述】:

我有 Spark Job aggregationfinal_2.11-0.1 jar,我在我的机器上运行它。它的组成如下:

package deploy
    object FinalJob {
      def main(args: Array[String]): Unit = {
        val spark = SparkSession
          .builder()
          .appName(s"${this.getClass.getSimpleName}")
          .config("spark.sql.shuffle.partitions", "4")
          .getOrCreate()

    //continued code
    }
    }

当我在本地模式下运行此代码时,它运行良好,但是当我将其部署在 EMR 集群上并将其 jar 放在主节点中时。它给出的错误如下:

ClassNotFoundException : deploy.FinalJob

我在这里错过了什么?

【问题讨论】:

    标签: scala apache-spark emr amazon-emr


    【解决方案1】:

    最好的选择是将您的 uber jar(您可以使用 sbt 程序集插件来构建 jar)部署到 s3 并将 spark 步骤添加到 EMR 集群。请查收:http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html

    【讨论】:

      【解决方案2】:

      尝试将其解压缩到某个文件夹并使用以下命令 jar -xvf myapp.jar 查找目标/类。如果目标类不包含您正在执行的类,那么您构建 jar 的方式存在问题。我建议将 maven 组件放在您的 pom 中进行包装。

      【讨论】:

        猜你喜欢
        • 2017-08-31
        • 1970-01-01
        • 2019-06-06
        • 2018-02-08
        • 2017-03-03
        • 2021-09-28
        • 2019-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多