Spark连接MongDB

本文介绍如何在Ubuntu16.04环境下配置Spark2.2.0与MongoDB3.4.7的数据交互,包括环境搭建、项目创建及Scala代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博文使用的环境是Ubuntu16.04+java8+Spark2.2.0+MongDB3.4.7,如果还未配置好相关环境可以参考本人前面所写博客:

Java环境配置:http://blog.youkuaiyun.com/lengconglin/article/details/77016911
MongDB安装:http://blog.youkuaiyun.com/lengconglin/article/details/77072842
Spark开发环境搭建:http://blog.youkuaiyun.com/lengconglin/article/details/77847623

创建项目前确保已经开启了spark和MongDB,
启动spark,在spark/sbin目录下执行 : ./start-all.sh 文件
启动MongDB,在MongDB安装目录的bin目录下执行 ./mongod

使用Intellij IDEA创建Scala项目,在build.sbt文件下添加依赖项,注释的可以根据自己需求添加:

libraryDependencies ++= Seq("org.apache.spark" % "spark-core_2.11" % "2.2.0")
libraryDependencies += "org.mongodb.spark" % "mongo-spark-connector_2.11" % "2.2.0"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"
//libraryDependencies += "org.apache.spark" % "spark-mllib_2.11" % "2.2.0"
//libraryDependencies +="org.apache.spark"%"spark-graphx_2.11"%"2.2.0"
//libraryDependencies +="org.apache.spark"%"spark-streaming_2.11"%"2.2.0"
//libraryDependencies +="org.apache.spark"%"spark-streaming-flume_2.11"%"2.2.0"

然后在src->main->scala目录下新建Scala Class,选择Kind为Object,命名为mongoTest .scala:

import com.mongodb.spark._
import org.apache.spark.{SparkConf, SparkContext}
import org.bson._

object mongoTest {

  def main(args: Array[String]): Unit = {
    //这里把"mongodb://127.0.0.1/forest.lengconglin"替换为自己的地址和数据库集合
    val conf = new SparkConf()
      .setMaster("local")
      .setAppName("Mingdao-Score")
      .set("spark.mongodb.input.uri", "mongodb://127.0.0.1/forest.lengconglin?readPreference=primaryPreferred")
      .set("spark.mongodb.output.uri", "mongodb://127.0.0.1/forest.lengconglin")
    val sc = new SparkContext(conf)
    //往MongDB写入数据
    val documents = sc.parallelize((1 to 10).map(i => Document.parse(s"{test: $i}")))
    MongoSpark.save(documents)
    //从MongDB读取数据
    val rdd = MongoSpark.load(sc)
    rdd.foreach(println)
    println("Count:"+rdd.count
  }
}

编译运行测试,可以得到结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值