Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark spark 2.4 com.databricks.spark.avro故障排除_Apache Spark_Spark Submit_Uberjar_Spark Avro - Fatal编程技术网

Apache spark spark 2.4 com.databricks.spark.avro故障排除

Apache spark spark 2.4 com.databricks.spark.avro故障排除,apache-spark,spark-submit,uberjar,spark-avro,Apache Spark,Spark Submit,Uberjar,Spark Avro,我有一个spark工作,通常从本地机器提交给hadoop集群。当我使用spark 2.2.0提交时,它工作正常,但在使用版本2.4.0提交时无法启动。 家里的火花才是关键 drwxr-xr-x 18 me 576 Jan 23 14:15 spark-2.4.0-bin-hadoop2.6 drwxr-xr-x 17 me 544 Jan 23 14:15 spark-2.2.0-bin-hadoop2.6 我把这份工作提交给你 spark-submit \ --master yarn

我有一个spark工作,通常从本地机器提交给hadoop集群。当我使用spark 2.2.0提交时,它工作正常,但在使用版本2.4.0提交时无法启动。 家里的火花才是关键

drwxr-xr-x  18 me  576 Jan 23 14:15 spark-2.4.0-bin-hadoop2.6
drwxr-xr-x  17 me  544 Jan 23 14:15 spark-2.2.0-bin-hadoop2.6
我把这份工作提交给你

spark-submit \
--master yarn \
--num-executors 20 \
--deploy-mode cluster \
--executor-memory 8g \
--driver-memory 8g \
--class package.MyMain uberjar.jar \
--param1 ${BLA} \
--param2 ${BLALA}
为什么新的spark版本拒绝接受我的uberjar?我没有发现spark 2.4 docu中有任何更改。顺便说一句:jar是用spark2.1作为依赖项构建的。有什么想法吗

编辑: 我认为我的问题与spark在我的uberjar中找不到东西无关。更确切地说,我可能对新内置的avro功能有问题。与前面一样,我使用com.databricks.spark.avro.中的隐式函数spark.read.avro读取avro文件。Spark 2.4.0有一些新的内置avro功能,其中大多数可以在org.apache.Spark:Spark-avro_2.*11*:2.4.0中找到。这次失败可能与此有关

java.lang.ClassNotFoundException: Failed to find data source: org.apache.spark.sql.avro.AvroFileFormat. Please find packages at http://spark.apache.org/third-party-projects.html
at org.apache.spark.sql.execution.datasources.DataSource$.lookupDataSource(DataSource.scala:657)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:194)
at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:178)
at com.databricks.spark.avro.package$AvroDataFrameReader$$anonfun$avro$2.apply(package.scala:34)
at com.databricks.spark.avro.package$AvroDataFrameReader$$anonfun$avro$2.apply(package.scala:34)
at myproject.io.TrainingFileIO.readVectorAvro(TrainingFileIO.scala:59)
at myproject.training.MainTraining$.train(MainTraining.scala:37)
苏。我认为问题在于更深层次。我得到的实际错误是:

似乎spark 2.4.0需要-packagesorg.apache.spark:spark-avro_2.11:2.4.0才能运行旧的com.databricks.spark.avro代码行。这里有一些描述

因此,我的问题与jar中缺少的类没有任何关系,而是与新spark版本中的新内置avro东西有一些问题。

似乎spark 2.4.0需要-packages org.apache.spark:spark-avro_2.11:2.4.0才能运行旧的com.databricks.spark.avro代码行。这里有一些描述


因此,我的问题与我的jar中缺少的类没有任何关系,而是与新spark版本中的新内置avro东西有一些问题。

发布完整的错误堆栈跟踪我有一些发现->可能与spark 2.40之间的冲突有关。内置avro和我使用的com.databricks.spark.avro。但atm并没有解决问题。稍后我会查看完整的错误堆栈跟踪我有一些发现->可能与spark 2.40之间的冲突有关。内置avro和我使用的com.databricks.spark.avro。但atm并没有解决问题。我稍后再看一下我是如何加上这个包裹的?它是jar文件吗?您可以如上所述通过指定maven坐标来添加它。但我不太确定,spark submit在解析依赖关系时会查看存储库的配置位置。在我的例子中,它出现在我的本地maven repo、中央存储库以及远程spark包repo中。无论如何,您可以使用-repositories指定所需的回购。如果您想通过附加jar提交,可以通过-jars来完成。如何添加包?它是jar文件吗?您可以如上所述通过指定maven坐标来添加它。但我不太确定,spark submit在解析依赖关系时会查看存储库的配置位置。在我的例子中,它出现在我的本地maven repo、中央存储库以及远程spark包repo中。无论如何,您可以使用-repositories指定所需的回购。如果您想通过额外的jar提交,您可以通过-jar来完成。