我遇到了一个奇怪的问题。我试图使用mongodb spark连接器将Spark本地连接到MongoDB。
除了设置spark之外,我还使用了以下代码:
val readConfig = ReadConfig(Map("uri" -> "mongodb://localhost:27017/movie_db.movie_ratings", "readPreference.name" -> "secondaryPreferred"), Some(ReadConfig(sc)))
val writeConfig = WriteConfig(Map("uri" -> "mongodb://127.0.0.1/movie_db.movie_ratings"))
// Load the movie rating data from Mongo DB
val movieRatings = MongoSpark.load(sc, readConfig).toDF()
movieRatings.show(100)
但是,我得到一个编译错误:
java.lang.IllegalArgumentException: Missing database name. Set via the 'spark.mongodb.input.uri' or 'spark.mongodb.input.database' property.
在我设置readConfig的地方。我不明白为什么当我在Map中明明有一个uri属性时,它却抱怨没有设置uri。我可能错过了什么。
3条答案
按热度按时间p8h8hvxi1#
您可以从这里提到的
SparkSession
执行此操作使用配置创建 Dataframe
将df写入mongodb
**您的代码中:**配置中缺少前缀
t8e9dugd2#
对于Java,您可以在创建spark session时设置configs,也可以先创建会话,然后将其设置为运行时配置。
1.
或
2.
然后
3phpmpom3#
如果您使用的是MongoDB Spark连接器,版本为10.1或更高,则为
SparkConf
has changed的配置密钥。设置配置的不同方法仍然可用。