MongoDB Spark
来源:互联网 发布:淘宝信用贷款逾期20天 编辑:程序博客网 时间:2024/05/16 19:18
MongoDB Spark Connector介绍
- 支持读取和写入,即可以将计算后的结果写入MongoDB
- 将查询拆分为n个子任务, 如Connector会将一次match,拆分为多个子任务交给spark来处理, 减少数据的全量读取
MongoDB Spark 示例代码
计算用类型Type=1的message字符数并按userid进行分组
开发Maven dependency配置
这里用的是mongo-spark-connector_2.11 的2.0.0版本和spark的spark-core_2.11的2.0.2版本
<dependency> <groupId>org.mongodb.spark</groupId> <artifactId>mongo-spark-connector_2.11</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.0.2</version> </dependency>
示例代码
import com.mongodb.spark._ import org.apache.spark.{SparkConf, SparkContext} import org.bson._ val conf = new SparkConf() .setMaster("local") .setAppName("Mingdao-Score") //同时还支持mongo驱动的readPreference配置, 可以只从secondary读取数据 .set("spark.mongodb.input.uri", "mongodb://xxx.xxx.xxx.xxx:27017,xxx.xxx.xxx:27017,xxx.xxx.xxx:27017/inputDB.collectionName") .set("spark.mongodb.output.uri", "mongodb://xxx.xxx.xxx.xxx:27017,xxx.xxx.xxx:27017,xxx.xxx.xxx:27017/outputDB.collectionName") val sc = new SparkContext(conf) // 创建rdd val originRDD = MongoSpark.load(sc) // 构造查询 val dateQuery = new BsonDocument() .append("$gte", new BsonDateTime(start.getTime)) .append("$lt", new BsonDateTime(end.getTime)) val matchQuery = new Document("$match", BsonDocument.parse("{\"type\":\"1\"}")) // 构造Projection val projection1 = new BsonDocument("$project", BsonDocument.parse("{\"userid\":\"$userid\",\"message\":\"$message\"}") val aggregatedRDD = originRDD.withPipeline(Seq(matchQuery, projection1)) //比如计算用户的消息字符数 val rdd1 = aggregatedRDD.keyBy(x=>{ Map( "userid" -> x.get("userid") ) }) val rdd2 = rdd1.groupByKey.map(t=>{ (t._1, t._2.map(x => { x.getString("message").length }).sum) }) rdd2.collect().foreach(x=>{ println(x) }) //保持统计结果至MongoDB outputurl 所指定的数据库 MongoSpark.save(rdd2)
作者:RavenZZ
链接:http://www.jianshu.com/p/dbac491317cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- spark mongodb
- spark mongodb
- MongoDB Spark
- 【MongoDB】【Spark】在MongoDB上使用Spark
- spark连接mongodb
- spark/hadoop整合mongodb
- spark streaming+mongodb(geo)
- Spark连接MongoDB
- Spark操作mongodb
- spark+mongodb + quartz
- spark读取mongodb
- spark读取mongodb数据
- Spark整合Mongodb
- Kafka->Spark Streaming->mongodb
- hadoop+spark+mongodb+mysql+c#
- spark读取mongodb(maven)
- 基于python的spark mongodb
- java操作spark读写mongodb
- Linux压缩文件的二三事
- c语言经典笔试题01-关于素数
- RockChip px3se 使用wpa_spplicant连接wifi上网
- spoj 1811 LCS 后缀自动机
- softmax函数
- MongoDB Spark
- CentOS 7安装vsftpd服务教程
- 评头条,每过3秒钟切换一条
- 57.Oracle杂记——Oracle常用X$视图
- 【笔记】STL
- ASP.NET中ReportView控件在配置数据源选择业务对象时下拉菜单没有选项
- FPGA作业3.1:例化2-4译码器
- tomcat中的几种log
- html表单