《當(dāng)MongoDB遇見Spark》要點(diǎn):
本文介紹了當(dāng)MongoDB遇見Spark,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:非關(guān)系型數(shù)據(jù)庫
適宜讀者人群
正在使用Mongodb的開發(fā)者
傳統(tǒng)Spark生態(tài)系統(tǒng) 和 MongoDB在Spark生態(tài)的角色
傳統(tǒng)Spark生態(tài)系統(tǒng)
Spark生態(tài)系統(tǒng)
那么Mongodb作為一個(gè)database, 可以擔(dān)任什么樣的角色呢? 就是數(shù)據(jù)存儲(chǔ)這部分, 也就是圖中的黑色圈圈HDFS的部分, 如下圖
用MongoDB替換HDFS后的Spark生態(tài)系統(tǒng)
Spark+Mongodb生態(tài)系統(tǒng)
為什么要用MongoDB替換HDFS
存儲(chǔ)方式上, HDFS以文件為單位,每個(gè)文件64MB~128MB不等, 而MongoDB作為文檔數(shù)據(jù)庫則表現(xiàn)得更加細(xì)顆粒化
MongoDB支持HDFS所沒有的索引的概念, 所以在讀取上更加快
MongoDB支持的增刪改功能比HDFS更加易于修改寫入后的數(shù)據(jù)
HDFS的響應(yīng)級(jí)別為分鐘, 而MongoDB通常是毫秒級(jí)別
如果現(xiàn)有數(shù)據(jù)庫已經(jīng)是MongoDB的話, 那就不用再轉(zhuǎn)存一份到HDFS上了
可以利用MongoDB強(qiáng)大的Aggregate做數(shù)據(jù)的篩選或預(yù)處理
MongoDB Spark Connector介紹
支持讀取和寫入,即可以將計(jì)算后的結(jié)果寫入MongoDB
將查詢拆分為n個(gè)子任務(wù), 如Connector會(huì)將一次match,拆分為多個(gè)子任務(wù)交給spark來處理, 減少數(shù)據(jù)的全量讀取
MongoDB Spark 示例代碼
計(jì)算用類型Type=1的message字符數(shù)并按userid進(jìn)行分組
開發(fā)Maven dependency配置
這里用的是mongo-spark-connector_2.11 的2.0.0版本和spark的spark-core_2.11的2.0.2版本
<dependency>
示例代碼
import com.mongodb.spark._ import org.apache.spark.{SparkConf, SparkContext} import org.bson._ val conf = new SparkConf()
維易PHP培訓(xùn)學(xué)院每天發(fā)布《當(dāng)MongoDB遇見Spark》等實(shí)戰(zhàn)技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養(yǎng)人才。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10175.html