我正在尝试将pyspark连接到mongodb。 群集已经设置好,所以我需要动态导入mongo驱动程序。
我已按照文档(此处和此处spark.jars)进行了尝试:
spark = SparkSession.builder\
.config("spark.mongodb.input.uri" , "mongodb://127.0.0.1/test.coll")\
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/test.coll")\
.config("spark.jars.packages" , "org.mongodb.spark:mongo-spark-connector_2.11:2.2.1")\
.getOrCreate()
但是这个:
df = spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri","mongodb://127.0.0.1/people.contacts").load()
给了我一个错误:
Py4JJavaError: An error occurred while calling o326.load.
: java.lang.NoClassDefFoundError: com/mongodb/ConnectionString
at com.mongodb.spark.config.MongoCompanionConfig$$anonfun$4.apply(MongoCompanionConfig.scala:278)
at com.mongodb.spark.config.MongoCompanionConfig$$anonfun$4.apply(MongoCompanionConfig.scala:278)
从网上的所有教程来看,我们还不清楚我们是否可以在运行时上传包,即使spark doc似乎有可能也是如此。
这些例子严重依赖于psark-submit“。但我自己使用的是jupyter笔记本,没有包含火花=>我通过”findspark“函数加载它,然后声明我的上下文。