Мне действительно нужна помощь.
Это повторяющийся вопрос ( py4j.protocol.Py4JJavaError: Ошибка при вызове o59.save.: java .lang.NoClassDefFoundError: scala / runtime / LazyBoolean ) так как ответа нет.
Я пытаюсь вставить Dataframe в MongoDB версии v3.6.17 или v4.2.3, но оба раза не удается. Я попробовал свои собственные данные и пример официальной документации (https://docs.mongodb.com/spark-connector/master/python/write-to-mongodb/), но он возвращает
ava.lang.NoClassDefFoundError: scala / runtime / LazyBoolean
![enter image description here](https://i.stack.imgur.com/EV565.png)
У меня были другие проблемы при попытке выполнить эту простую задачу, например ( Невозможно подключиться к пн go DB через Spark , Приложение Spark и MongoDB в Scala 2.10 ошибка встроенного maven ) и чтение некоторых возможных решений, таких как (https://github.com/mongodb/mongo-spark, https://github.com/mongodb/mongo-spark/blob/master/examples/src/test/python/introduction.py), но без успеха.
Моя версия Spark 2.4.4, Python 3.7.6, я использую IntelliJ 2019.3 в качестве IDE.
![enter image description here](https://i.stack.imgur.com/Kbhuh.png)
Мой код выглядит следующим образом:
from pyspark.sql import Row
from pyspark.sql.types import *
from select import select
#import org.mongodb.spark.sql.DefaultSource # ModuleNotFoundError: No module named 'org'
#import org.mongodb.spark # ModuleNotFoundError: No module named 'org'
#import org.bson.Document # ModuleNotFoundError: No module named 'org'
from linecache import cache
from pyspark.sql import SparkSession
from pyspark.sql.functions import col, monotonically_increasing_id
if __name__ == "__main__":
spark = SparkSession \
.builder \
.appName("spark_python") \
.master("local") \
.getOrCreate()
spark.sparkContext.setLogLevel("ERROR")
print("http://desktop-f5ffrvd:4040/jobs/")
mongo_spark = SparkSession \
.builder \
.appName("myApp") \
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/test.contacts") \
.config('spark.jars.packages', 'org.mongodb.spark:mongo-spark-connector_2.12:2.4.1') \
.getOrCreate()
# .config("spark.mongodb.input.uri", "mongodb://127.0.0.1/test.contacts") \
people = mongo_spark\
.createDataFrame([("Bilbo Baggins", "50"), ("Gandalf", "1000"), ("Thorin", "195"), ("Balin", "178"), ("Kili", "77"), ("Dwalin", "169"), ("Oin", "167"), ("Gloin", "158"), ("Fili", "82"), ("Bombur", "None")], ["name", "age"])
people.show()
people.printSchema()
people\
.write\
.format("mongo")\
.mode("append")\
.option("database", "test")\
.option("collection", "contacts")\
.save()
spark.stop()
mongo_spark.stop()
pom. xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>airbnb_python</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.scala-lang/scala-library -->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.12.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.12</artifactId>
<version>2.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mongodb.spark/mongo-spark-connector -->
<dependency>
<groupId>org.mongodb.spark</groupId>
<artifactId>mongo-spark-connector_2.11</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.8.0</version>
</dependency>
</dependencies>
</project>
пытается следовать документации (https://docs.mongodb.com/spark-connector/master/python-api/#python -basics ), при запуске
pyspark --conf "spark.mongodb.input.uri = mongodb: //127.0.0.1/test.myCollection? readPreference = primaryPreferred" - conf "spark.mongodb.output.uri = mongodb: //127.0.0.1/test.myCollection"
--packages org.mongodb.spark: mon go -spark-connector_2.11: 2.4.1
на консоли Windows, с кодом выше я получаю ту же ошибку. На C: \ Users \ israel.ivy2 \ jars У меня есть два jar: org.mongodb.spark_mon go -spark-connector_2.11-2.3.0 и org.mongodb_mon go - java -driver- 3.8.0.
Я пишу этот вопрос, потому что у меня закончились идеи, я уже проконсультировался с 4 инженером данных, и мне действительно нужна помощь, пожалуйста. Заранее спасибо.