【问题标题】:Failed to load main class from JAR file while running with spark-submit使用 spark-submit 运行时无法从 JAR 文件加载主类
【发布时间】:2017-04-30 08:46:04
【问题描述】:

我正在使用“spark-submit --master local --executor-memory 800m target/scala-2.10/finalproject_2.10-1.0.jar”提交作业

我的 sbt 文件具有以下依赖项:

name := "Projectx"

version := "1.0"

scalaVersion := "2.10.6"

libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.3"

libraryDependencies += "org.apache.spark" % "spark-sql_2.10" % "1.6.1"

libraryDependencies += "com.databricks" % "spark-csv_2.10" % "1.4.0"

我的代码:

object Projectx {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("AirlineAnalysis")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
     sc.setLogLevel("ERROR")


    // HDFS
    val rawFlights= sc.textFile("hdfs://localhost:9000/Project/2008.csv")
       rawFlights.take(5) 
 val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("hdfs://localhost:9000/Project/2008.csv")
    df.take(5)
    df.printSchema()
    df.col("Year").cast("int")
   val df_1 = df.withColumnRenamed("Year","oldYear")
   val df_2 = df_1.withColumn("Year",df_1.col("oldYear").cast("int")).drop("oldYear")
  def convertColumn(df: org.apache.spark.sql.DataFrame, name:String, newType:String) = {
  val df_1 = df.withColumnRenamed(name, "swap")
  df_1.withColumn(name, df_1.col("swap").cast(newType)).drop("swap")
}
  val df_3 = convertColumn(df_2, "ArrDelay", "int")
  val df_4 = convertColumn(df_2, "DepDelay", "int")

  val averageDelays = df_4.groupBy(df_4.col("FlightNum")).agg(avg(df_4.col("ArrDelay")), avg(df_4.col("DepDelay")))
  averageDelays.cache()
  averageDelays.show()
  averageDelays.orderBy("AVG(ArrDelay)").show()
averageDelays.write.format("com.databricks.spark.csv").option("header","true").save("hdfs://localhost:9000/Flight")
  sc.stop()
  }
    }

错误

spark-submit --master local --executor-memory 800m target/scala-2.10/projectx_2.10-1.0.jar
Error: Cannot load main class from JAR file:/home/hdadmin/target/scala-2.10/projectx_2.10-1.0.jar
Run with --help for usage help or --verbose for debug output

请帮忙!

【问题讨论】:

    标签: scala apache-spark


    【解决方案1】:

    尝试添加:

    --class "packageName.Projectx"
    

    运行命令。 (“packageName.”取决于您的项目结构,可能不是必需的。)

    编辑: 为了响应您的第二个错误(在下面的 cmets 中),我相信您在运行命令中也需要这个:

    --packages com.databricks:spark-csv_2.10:1.4.0
    

    【讨论】:

    • 我能够用这个 spark-submit --class "finalproject" --master local --executor-memory 800m target/scala-2.10/finalproject_2.10-1.0.jar 运行它"
    • 但我现在收到此错误“线程“主”java.lang.ClassNotFoundException 中的异常:无法找到数据源:com.databricks.spark.csv。请在spark-packages.org 找到包org.apache.spark.sql.execution.datasources.ResolvedDataSource$.lookupDataSource(ResolvedDataSource.scala:77)"
    【解决方案2】:

    这工作spark-submit --class "finalproject" --master local --executor-memory 800m target/scala-2.10/finalproject_2.10-1.0.jar

    【讨论】:

      【解决方案3】:

      你没有添加 --class ,所以它无法从 jar 中找到主类。

      ./bin/spark-submit \
        --class <main-class> \
        --master <master-url> \
        --deploy-mode <deploy-mode> \
        --conf <key>=<value> \
        ... # other options
        <application-jar> \
        [application-arguments]
      

      http://spark.apache.org/docs/latest/submitting-applications.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-18
        • 2020-02-18
        • 2017-04-11
        • 2020-04-24
        相关资源
        最近更新 更多