Ошибка Spark-Submit: невозможно загрузить основной класс из файла JAR - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь spark-submit приложение в кластерном режиме Scala. В PySpark оно работало нормально, но при попытке запустить Scala появляется вышеуказанная ошибка. Если мне нужно добавить зависимости SBT и Maven, можете ли вы разработать процедуру (я не могу найти в Google)

Это мой код:

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object MyFirst {
  def main(args: Array[String]) {
    // create Spark context with Spark configuration
    val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))

    // get threshold
    val threshold = args(1).toInt

    // read in text file and split each document into words
    val tokenized = sc.textFile(args(0)).flatMap(_.split(" "))

    // count the occurrence of each word
    val wordCounts = tokenized.map((_, 1)).reduceByKey(_ + _)

    // filter out words with fewer than threshold occurrences
    val filtered = wordCounts.filter(_._2 >= threshold)

    // count characters
    val charCounts = filtered.flatMap(_._1.toCharArray).map((_, 1)).reduceByKey(_ + _)

    System.out.println(charCounts.collect().mkString(", "))
  }
}

Вот мой Build.sbt

name := "MyFirst"

scalaVersion := "2.10.3"

// https://mvnrepository.com/artifact/org.apache.spark/spark-core
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.2.0"

My Spark Submit был : spark-submit MyFirst --class MyFirst /home/ram/Downloads/sbt/src/target/scala-2.10/MyFirst_2.10-0.1.0-SNAPSHOT.jar

1 Ответ

0 голосов
/ 09 ноября 2018

У меня была эта проблема раньше.

Попробуйте определить пакет для вашего класса, примерно так:

package com.testing

import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object MyFirst {
  def main(args: Array[String]) {
    // create Spark context with Spark configuration
    val sc = new SparkContext(new SparkConf().setAppName("Spark Count"))
    // more code ...
  }
}

А затем используйте:

spark-submit MyFirst --class com.testing.MyFirst /home/ram/Downloads/sbt/src/target/scala-2.10/MyFirst_2.10-0.1.0-SNAPSHOT.jar

Также убедитесь, что вы создали файл MANIFEST.MF .

Вот краткий пример того, как это будет выглядеть:

Manifest-Version: 1.0
Main-Class: com.testing.MyFirst
...