环境:
centos 7 64bit
scala-2.10.5
spark-1.6.2
mongo-3.2
__ 版本不匹配可能会导致各种各样的错误,尽量使用推荐的版本 __
_ 如果遇到未知问题,请先检查对应版本 _
安装
- 安装spark和scala并配置好环境变量
- 安装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 - 开启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”}) -
开启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
mongo-spark-connector 连接器不用下载吗
好像自带
您好,想请问一下,如果不知道document里面存的数据的数据类型,取值的时候怎么取呢?如果用get取出来类型为Any,做reduce的时候会报错 [><]
用万能的的try catch语句尝试转换试试