无法读取Spark中的实木复合地板文件:java.lang.NoSuchMethodError:org.json4s.jackson.JsonMethods

时间:2020-05-01 05:21:20

标签: scala maven apache-spark sbt parquet

我正在尝试读取活泼的压缩镶木地板文件,但一直低于异常。我找不到此异常的根本原因,有人可以在这里指导我吗?

   val sparkSession: SparkSession = SparkSession.builder()
  .master("local[2]")
  .config("spark.ui.enabled",false)
  .appName("local-intellij")
  .getOrCreate()
val df = sparkSession.read.parquet("C:\\data\\parquet\\part-00000-4ce5708f-2f50-485d-8ae4-7c5ea440fda6.c000.snappy.parquet")

我的依赖项是:

lazy val json4sVersion = "3.5.0"
lazy val json4sDeps = Seq(
"org.json4s" %% "json4s-core" % json4sVersion,
"org.json4s" %% "json4s-native" % json4sVersion,
"org.json4s" %% "json4s-ast" % json4sVersion,
"org.json4s" %% "json4s-jackson" % json4sVersion)
lazy val sparkVersionCore = "2.3.0.cloudera2"
lazy val sparkDeps = Seq(
"org.apache.spark" %% "spark-hive" % sparkVersionCore,
"org.apache.spark" %% "spark-core" % sparkVersionCore)

java.lang.NoSuchMethodError:org.json4s.jackson.JsonMethods $ .parse(Lorg / json4s / JsonInput; Z)Lorg / json4s / JsonAST $ JValue; 在org.apache.spark.sql.types.DataType $ .fromJson(DataType.scala:113) 在org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat $$ anonfun $ org $ apache $ spark $ sql $ execution $ datasources $ parquet $ ParquetFileFormat $$ deserializeSchemaString $ 3.apply(ParquetFileFormat.scala:650)处 在org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat $$ anonfun $ org $ apache $ spark $ sql $ execution $ datasources $ parquet $ ParquetFileFormat $$ deserializeSchemaString $ 3.apply(ParquetFileFormat.scala:650)处 在scala.util.Try $ .apply(Try.scala:192) 在org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat $ .org $ apache $ spark $ sql $ execution $ datasources $ parquet $ ParquetFileFormat $$ deserializeSchemaString(ParquetFileFormat.scala:650) 在org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat $$ anonfun $ readSchemaFromFooter $ 1.apply(ParquetFileFormat.scala:643)处 在org.apache.spark.sql.execution.datasources.parquet.ParquetFileFormat $$ anonfun $ readSchemaFromFooter $ 1.apply(ParquetFileFormat.scala:643)

1 个答案:

答案 0 :(得分:2)

对于 spark版本2.3.0

清除jar版本不匹配。

AFAIK,您必须使用org.json4s json4s-jackson_2.11 3.2.11

// https://mvnrepository.com/artifact/org.json4s/json4s-jackson
libraryDependencies += "org.json4s" %% "json4s-jackson" % "3.2.11"

AFAIK此项条目不是必需的,一旦您在sbt中提到spark版本,我认为它将自动下载。只需尝试删除该条目,然后查看...如果不起作用,请添加上述条目。