Missing database name. Set via the ‘spark.mongodb.output.uri‘

Spark插入MongoDB出现的错误

解决方案:

1.确认是否在spark中配置了相关的库和表

2.检测是否出现1个以上的spark(我之前检查过配置都没有问题,demo也可以跑,但是我的离线用户画像却一直插入不进去。

仔细检查发现,我写了个sparkSession,也写了个sparkContext,但是我是sparkContext不是由sparkSession创建的。

所以就导致一个服务有多个sparkContext。那么它只会执行一个sparkContext。)

插入示例

  val database = "info_test"
    val collection = "course"
    val host = "127.0.0.1"
    val outPutUri = s"mongodb://$host/"


    val spark = SparkSession
      .builder()
      .master("local[2]")
      .config("spark.mongodb.output.uri", outPutUri)
      .config("spark.mongodb.output.database",database)
      .config("spark.mongodb.output.collection",collection)
      .config("spark.mongodb.output.maxBatchSize",1024)
      .appName("MongoSparkConnectorIntro")
      .getOrCreate()






    val testrdd = spark.sparkContext.parallelize(Array("{\"id\":\"202007304\",\"name\":\"李五\",\"sex\":\"男\",\"birthday\":\"1994-09-13\",\"province\":\"河北\"}"))
    import spark.implicits._ //隐式转换,自动帮你把上述json,转换成相对应的类
    //将rdd转换为dataset
    val testds= spark.createDataset(testrdd)
    //将dataset转换为dataframe
    val df = spark.read.json(testds)

    df.show()

    MongoSpark.save(
      df
        .write
        .mode(SaveMode.Append)//Append代表追加,Overwrite代表覆盖,写入的模式、
    )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值