在mongodb上使用Spark

spark构建在hadoop之上,提供了比mapreduce更多的操作,支持在流式数据上进行迭代计算。

因为spark构建在hadoop和hdfs上,所以它兼容任何hdfs数据源,mongo-hadoop connector连接hadoop和mongodb,运行hadoop对mongodb进行直接的读写。所以连接mongodb和spark理论上是可行的

然后怎么配置mongo-hadoop来连接spark.经过一些列的尝试。终于连接完成。
https://github.com/plaa/mongo-spark

不同版本的API
hadoop生态系统充满了不同的和各种不兼容的api版本,最主要的版本改变是hadoop 0.20:旧版的org.apache.hadoop.mapred变成新版的org.apache.hadoop.mapreduce。 同样mongodb-hadoop也有不通的包,spark相应的也有不通的方法hadoopRDD和newAPIHadoopRDD

使用mongo-hadoop
mongo-hadoop的配置参数是通过Configuration对象传递的。其中最重要的参数是mongo.input.uri和mongo.output.uri.
每个mongo的集合作为一个分开的RDD被SparkContext加载。
JavaPairRDD<Object, BSONObject> rdd = sc.newAPIHadoopRDD(config, MongoInputFormat.class, Object.class, BSONObject.class);

这里使用新的api。MongoInputFormt必须从com.mongodb.hadoop中导入。

返回的类型是RDD<Object,BSONObject>.第一个参数是一个ObjectId实例,就是mongodb文档的对象ID,第二个参数就是包含BSON文档。
保存一个RDD到mongodb使用了 saveAsNewAPIHadoopFile  方法。
rdd.saveAsNewAPIHadoopFile(" file:///bogus ", Object.class, Object.class, MongoOutputFormat.class, config);











转载于:https://my.oschina.net/1987times/blog/265483

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值