Команда Spark Submit возвращает отсутствующий ресурс приложения - PullRequest
1 голос
/ 03 августа 2020

Для начала я создал jar-файл, используя этот Как правильно создавать jar-файлы из IntelliJ? .

Путь к моим файлам Jar:

out/artifacts/sparkProgram_jar/sparkProgram.jar

My Программа Spark, как правило, читает таблицу из MongoDB, преобразует ее с помощью программы spark's mllib и записывает в MySQL. Вот мой файл build.sbt.

name := "sparkProgram"

version := "0.1"

scalaVersion := "2.12.4"
val sparkVersion = "3.0.0"
val postgresVersion = "42.2.2"

resolvers ++= Seq(
  "bintray-spark-packages" at "https://dl.bintray.com/spark-packages/maven",
  "Typesafe Simple Repository" at "https://repo.typesafe.com/typesafe/simple/maven-releases",
  "MavenRepository" at "https://mvnrepository.com"
)

libraryDependencies ++= Seq(
  "org.apache.spark" %% "spark-core" % sparkVersion,
  "org.apache.spark" %% "spark-sql" % sparkVersion,
  "org.apache.spark" %% "spark-mllib" % sparkVersion,
  // logging
  "org.apache.logging.log4j" % "log4j-api" % "2.4.1",
  "org.apache.logging.log4j" % "log4j-core" % "2.4.1",
  "org.mongodb.spark" %% "mongo-spark-connector" % "2.4.1",

  //"mysql" % "mysql-connector-java" % "5.1.12",
  "mysql" % "mysql-connector-java" % "8.0.18"
).

Мой основной класс находится в пакете com.testing в объекте scala с именем

mainObject

Когда я запускаю следующую искру - отправить команду

spark-submit --master local --class com.testing.mainObject
--packages mysql:mysql-connector-java:8.0.18,org.mongodb.spark:mongo-spark-connector_2.12:2.4.1 out/artifacts/sparkProgram_jar/sparkProgram.jar

Я получаю эту ошибку

Error: Missing application resource.

Usage: spark-submit [options] <app jar | python file | R file> [app arguments]
Usage: spark-submit --kill [submission ID] --master [spark://...]
Usage: spark-submit --status [submission ID] --master [spark://...]
Usage: spark-submit run-example [options] example-class [example args]

Options:


... zsh: command not found: --packages

А затем, когда я пытаюсь запустить свой spark-submit без --packages (просто чтобы проверить, что произойдет), я получаю эта ошибка.

команда:

spark-submit --master local --class com.testing.mainObject out/artifacts/sparkProgram_jar/sparkProgram.jar

ошибка: Ошибка: не удалось загрузить класс com.testing.mainObject

Я использовал spark-submit раньше, и он работал (пару месяцев назад). Я не уверен, почему это все еще вызывает ошибку. Мой MANIFEST.MF следующий

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

1 Ответ

1 голос
/ 04 августа 2020

До сих пор мой ответ заключался в том, чтобы сначала создать файл jar по-другому. (Создание IntelliJ)

File -> Project Structure -> Project Settings -> Artifacts -> Jar, однако вместо извлечения в jar я щелкнул

Copy to Output and link to manifest

Оттуда я сделал команду spark-submit, в которой не было части --packages. Это было

spark-submit --class com.testing.mainObject --master local out/artifacts/sparkProgram_jar/sparkProgram.jar

Также будьте осторожны с интервалом, копированием и вставкой в ​​ваш терминал. Пробелы могут вызывать странные ошибки.

Отсюда у меня была другая ошибка, которая показана здесь. https://github.com/Intel-bigdata/HiBench/issues/466. Решение в комментариях

"This seems to happen with hadoop 3. I solved it removing a hadoop-hdfs-2.4.0.jar that was in the classpath."
...