gpt4 book ai didi

mongodb - Spark Mongodb 连接器 Scala - 缺少数据库名称

转载 作者:IT老高 更新时间:2023-10-28 13:26:50 26 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我正在尝试使用 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。我可能遗漏了什么。

最佳答案

您可以从这里提到的 SparkSession 中进行操作

val spark = SparkSession.builder()
.master("local")
.appName("MongoSparkConnectorIntro")
.config("spark.mongodb.input.uri", "mongodb://localhost:27017/movie_db.movie_ratings")
.config("spark.mongodb.input.readPreference.name", "secondaryPreferred")
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/movie_db.movie_ratings")
.getOrCreate()

使用配置创建数据框

val readConfig = ReadConfig(Map("uri" -> "mongodb://localhost:27017/movie_db.movie_ratings", "readPreference.name" -> "secondaryPreferred"))
val df = MongoSpark.load(spark)

将df写入mongodb

MongoSpark.save(
df.write
.option("spark.mongodb.output.uri", "mongodb://127.0.0.1/movie_db.movie_ratings")
.mode("overwrite"))

在您的代码中: 配置中缺少前缀

val readConfig = ReadConfig(Map(
"spark.mongodb.input.uri" -> "mongodb://localhost:27017/movie_db.movie_ratings",
"spark.mongodb.input.readPreference.name" -> "secondaryPreferred"),
Some(ReadConfig(sc)))

val writeConfig = WriteConfig(Map(
"spark.mongodb.output.uri" -> "mongodb://127.0.0.1/movie_db.movie_ratings"))

关于mongodb - Spark Mongodb 连接器 Scala - 缺少数据库名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com