Spark连接mongoDB操作过程

环境:

centos 7 64bit
scala-2.10.5
spark-1.6.2
mongo-3.2

__ 版本不匹配可能会导致各种各样的错误,尽量使用推荐的版本 __
_ 如果遇到未知问题,请先检查对应版本 _

安装

  1. 安装spark和scala并配置好环境变量
  2. 安装mongoDB
    这里我用的docker快速搭建
    docker pull mongo:3.2
    创建mongodb的data目录
    mkdir -p /data/mongo
    启动mongo,映射端口和目录
    docker run -p 27017:27017 -v /root/db:/data/mongo -d mongo:3.2
  3. 开启mongo
    docker run -it mongo:3.2 mongo --host 172.17.0.1
    创建测试记录
    db.spark.input.insert({"id":1,"name":"chengyu"})
    db.spark.input.insert({"id":2,"name":"gezi"})

  4. 开启spark
    ./start-all.sh
    进入spark-shell
    spark-shell --conf "spark.mongodb.input.uri=mongodb://127.0.0.1/spark.input" --conf "spark.mongodb.output.uri=mongodb://127.0.0.1/spark.output" --packages org.mongodb.spark:mongo-spark-connector_2.10:1.0.0

测试

读取测试

import com.mongodb.spark._
import org.bson.Document
MongoSpark.load(sc).take(10).foreach(println)

写入mongo测试

import org.bson.Document
val documents = sc.parallelize((1 to 10).map(i => Document.parse(s"{test: $i}")))
MongoSpark.save(documents) // Uses the SparkConf for configuration

6 条评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称
  1. root Firefox 61 Firefox 61 Ubuntu Ubuntu

    mongo-spark-connector 连接器不用下载吗

    1. 鸽子 鸽子 Google Chrome 68 Google Chrome 68 Windows 10 Windows 10

      好像自带

  2. 匿名 Microsoft Edge 15 Microsoft Edge 15 Windows 10 Windows 10

    您好,想请问一下,如果不知道document里面存的数据的数据类型,取值的时候怎么取呢?如果用get取出来类型为Any,做reduce的时候会报错 [><]

    1. 鸽子 鸽子 Google Chrome 64 Google Chrome 64 GNU/Linux GNU/Linux

      用万能的的try catch语句尝试转换试试

  3. 匿名 Microsoft Edge 15 Microsoft Edge 15 Windows 10 Windows 10

    [0_0] [0_0] [0_0]

  4. 212 Google Chrome 61 Google Chrome 61 Windows 10 Windows 10

    [0_0] [0_0] [0_0] [0_0]