#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