Pyspark — не удалось получить основной класс в JAR с ошибкой ‘File file:/home/xpto/spark/, не существует’

#apache-spark #pyspark #apache-kafka

#apache-искра #pyspark #апачи-кафка

Вопрос:

Я использую pyspark для записи в kafka.

Когда я запускаю команду:

 bin/spark-submit --packages org.apache.spark:spark-streaming-kafka-0-10-assembly_2.12:3.0.1,org.apache.spark:spark-sql-kafka-0-10_2.11:2.0.2 --jars /home/xpto/spark/jars/spark-streaming-kafka-0-10-assembly_2.12-3.0.1.jar , /home/xpto/spark/jars/spark-sql-kafka-0-10_2.11-2.0.2.jar , /home/xpto/spark/jars/kafka-clients-2.6.0.jar --verbose  --master local[2] /home/xavy/Documents/PersonalProjects/Covid19Analysis/pyspark_job_to_write_data_to_kafkatopic.py
 

Я получаю сообщение об ошибке:

 :: retrieving :: org.apache.spark#spark-submit-parent-ad9bf9ab-6d6d-4edd-bd1f-4b3145c2457f
    confs: [default]
    0 artifacts copied, 7 already retrieved (0kB/3ms)
20/11/22 18:35:02 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Exception in thread "main" org.apache.spark.SparkException: Failed to get main class in JAR with error 'File file:/home/xpto/spark/, does not exist'.  Please specify one with --class.
    at org.apache.spark.deploy.SparkSubmit.error(SparkSubmit.scala:936)
    at org.apache.spark.deploy.SparkSubmit.prepareSubmitEnvironment(SparkSubmit.scala:457)
    at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$runMain(SparkSubmit.scala:871)
    at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:203)
    at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:90)
    at org.apache.spark.deploy.SparkSubmit$anon$2.doSubmit(SparkSubmit.scala:1007)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1016)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
 

Я не знаю, какой класс запрашивает spark…

Я запускаю это локально на своем компьютере, но не уверен, что это правильный способ сделать это.

Может кто-нибудь помочь и указать мне правильное направление?

Ответ №1:

Итак, интервал имеет значение — убедитесь, что вы не вставляете пробелы в пути к файлам

Например, вы указали этот путь в строке пакетов

 , /home/xpto/spark/jars/spark-sql-kafka-0-10_2.11-2.0.2.jar
 

Не понятно, почему вы указываете локальный путь к файлу, когда их получение из maven должно работать нормально. Однако вам необходимо использовать согласованные версии Spark… Вы смешали 3.x и 2.x, а также Scala 2.12 и 2.11

Вам также не должны не нужны как spark-streaming-kafka, так и spark-sql-kafka


Что касается ошибки, синтаксис, который, по его мнению, вы пытались использовать, предназначен для Java

 spark-submit [options]  --class MainClass application.jar 
 

Для приложений на python вы можете использовать --py-files