Caused by: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTig

3658 단어
(1)pyspark에서 연결, 몬godb에서 연결 코드는 다음과 같다. 버전,spark2.3.0,scala2.11.8
#     
spark = SparkSession \
    .builder \
    .appName("pyspark-mongodb data source example") \
    .config("spark.mongodb.input.uri",
            "mongodb://192.168.5.247:27017/test.company_info") \
    .config("spark.mongodb.output.uri",
            "mongodb://192.168.5.247:27017/test.company_info") \
    .master('local[*]') \
    .getOrCreate()

# df = spark.read.format("com.mongodb.spark.sql").option("spark.mongodb.input.uri",
                                                            
#                              "mongodb://192.168.5.247:27017/test.company_info").load()

df = spark.read.format("com.mongodb.spark.sql").load()

(2) 연결 시 오류 보고: 아래와 같습니다.
Caused by: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTightestCommonTypeOfTwo()Lscala/Function2;
        at com.mongodb.spark.sql.MongoInferSchema$.com$mongodb$spark$sql$MongoInferSchema$$compatibleType(MongoInferSchema.scala:135)
        at com.mongodb.spark.sql.MongoInferSchema$$anonfun$3.apply(MongoInferSchema.scala:78)
        at com.mongodb.spark.sql.MongoInferSchema$$anonfun$3.apply(MongoInferSchema.scala:78)
        at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
        at scala.collection.TraversableOnce$$anonfun$foldLeft$1.apply(TraversableOnce.scala:157)
        at scala.collection.Iterator$class.foreach(Iterator.scala:893)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
        at scala.collection.TraversableOnce$class.foldLeft(TraversableOnce.scala:157)
        at scala.collection.AbstractIterator.foldLeft(Iterator.scala:1336)
        at scala.collection.TraversableOnce$class.aggregate(TraversableOnce.scala:214)
        at scala.collection.AbstractIterator.aggregate(Iterator.scala:1336)
        at org.apache.spark.rdd.RDD$$anonfun$treeAggregate$1$$anonfun$23.apply(RDD.scala:1139)
        at org.apache.spark.rdd.RDD$$anonfun$treeAggregate$1$$anonfun$23.apply(RDD.scala:1139)
        at org.apache.spark.rdd.RDD$$anonfun$treeAggregate$1$$anonfun$24.apply(RDD.scala:1140)
        at org.apache.spark.rdd.RDD$$anonfun$treeAggregate$1$$anonfun$24.apply(RDD.scala:1140)
        at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:800)
        at org.apache.spark.rdd.RDD$$anonfun$mapPartitions$1$$anonfun$apply$23.apply(RDD.scala:800)
        at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)
        at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:324)
        at org.apache.spark.rdd.RDD.iterator(RDD.scala:288)
        at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)
        at org.apache.spark.scheduler.Task.run(Task.scala:109)
        at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        ... 1 more

(3) 문제 분석:
Caused by: java.lang.NoSuchMethodError와 같은 오류는 보통jar 패키지의 버전 충돌로 인한 것입니다.
  • jar 패키지의 버전이 맞지 않습니다
  • 두 가지 버전의 jar 패키지가 있는데, jar 패키지 버전 충돌
  • (4) 문제 해결
  • 해당 패키지 다운로드https://download.csdn.net/download/qq_21735341/10657593 (mongo-java-driver-3.8.0.jar,mongo-spark-connector_2.11-2.3.0.jar)
  • spark의jar백에서 이전의 대응 버전을 교체합니다. 주의: 반드시 이전 버전을 삭제해야 합니다. 반드시 삭제해야 합니다. 그렇지 않으면jar백 버전이 충돌하여 같은 오류를 보고할 수 있습니다
  • 좋은 웹페이지 즐겨찾기