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

问题描述 投票:0回答:1

我有一个火花工作,我通常从本地机器提交到hadoop集群。当我用spark 2.2.0提交它时它工作正常,但是当我用2.4.0版本提交时它无法启动。只是SPARK_HOME有所作为。

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}

为什么新的火花版拒绝接受我的uberjar?我没有发现火花2.4纪录片有任何变化。顺便说一句:罐子是用火花2.1作为依赖。有任何想法吗?

编辑:我认为我的问题与火花无法在我的uberjar中找不到东西有关。更确切地说,我可能会遇到新的内置avro功能的问题。和以前一样,我使用spark.read.avro的隐式函数com.databricks.spark.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)

洙。我认为问题更深层次。我得到的实际错误是:

apache-spark spark-submit uberjar spark-avro
1个回答
2
投票

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

所以我的问题与我的jar中缺少的类没有任何关系,更确切地说,在新的spark版本中新的内置avro事情有些问题。

© www.soinside.com 2019 - 2024. All rights reserved.