編者按:本文作者汪榕曾寫過(guò)一篇文章:《以什么姿勢(shì)進(jìn)入數(shù)據(jù)挖掘會(huì)少走彎路》,是對(duì)想入行大數(shù)據(jù)的讀者的肺腑之言,其中也表達(dá)了作者的一些想法,希望大家不要隨便去上沒有結(jié)合業(yè)務(wù)的收費(fèi)培訓(xùn)班課程;而后,他有了結(jié)合他本人的工作經(jīng)驗(yàn),寫一系列幫助大家進(jìn)行實(shí)踐學(xué)習(xí)課程文章的想法,InfoQ也覺得這是件非常有意義的事情,特別是對(duì)于大數(shù)據(jù)行業(yè)1-3年工作經(jīng)驗(yàn)的人士,或者是沒有相關(guān)工作經(jīng)驗(yàn)但是想入行大數(shù)據(jù)行業(yè)的人。課程的名稱是“數(shù)據(jù)挖掘與數(shù)據(jù)產(chǎn)品的那些事”,目的是:1. 引導(dǎo)目標(biāo)人群正確學(xué)習(xí)大數(shù)據(jù)挖掘與數(shù)據(jù)產(chǎn)品;2. 協(xié)助代碼能力薄弱的學(xué)習(xí)者逐漸掌握大數(shù)據(jù)核心編碼技巧;3. 幫助目標(biāo)人群理解大數(shù)據(jù)挖掘生態(tài)圈的數(shù)據(jù)流程體系;4. 分享大數(shù)據(jù)領(lǐng)域?qū)嵺`數(shù)據(jù)產(chǎn)品與數(shù)據(jù)挖掘開發(fā)案例;5.交流大數(shù)據(jù)挖掘從業(yè)者職業(yè)規(guī)劃和發(fā)展方向。這系列文章會(huì)在InfoQ上形成一個(gè)專欄,本文是專欄的第二篇。
第一部分:回顧以前的一篇文章
簡(jiǎn)單之極,搭建屬于自己的Data Mining環(huán)境(Spark版本)很多朋友也親自動(dòng)手搭建了一遍,當(dāng)然也遇到不少困難,我都基本一對(duì)一給予了回復(fù),具體可以查看原文。
相關(guān)廠商內(nèi)容
福利/點(diǎn)擊參與抽獎(jiǎng)無(wú)人機(jī)、kindle、愛奇藝全年會(huì)員
付錢拉開發(fā)者支持大禮包速領(lǐng)!!
支付系統(tǒng)架構(gòu)那點(diǎn)事-上篇
你不得不知的聚合支付的魅力和前景
相關(guān)贊助商

為中小微企業(yè)提供一站式金融服務(wù)解決方案!
下面的實(shí)踐也主要是基于上述部署的環(huán)境來(lái)進(jìn)行開發(fā)。
第二部分:初步學(xué)習(xí)Spark與數(shù)據(jù)挖掘相關(guān)的核心知識(shí)點(diǎn)
對(duì)于這部分的介紹,不擴(kuò)展到Spark框架深處,僅僅介紹與大數(shù)據(jù)挖掘相關(guān)的一些核心知識(shí),主要分了以下幾個(gè)點(diǎn):
初步了解spark
- 適用性強(qiáng):它是一種靈活的框架,可同時(shí)進(jìn)行批處理、 流式計(jì)算、 交互式計(jì)算。
- 支持語(yǔ)言:目前spark只支持四種語(yǔ)言,分別為java、python、r和scala。但是個(gè)人推薦盡量使用原生態(tài)語(yǔ)言scala。畢竟數(shù)據(jù)分析圈和做數(shù)據(jù)科學(xué)研究的人群蠻多,為了吸引更多人使用spark,所以兼容了常用的R和python。
與MapReduce的差異性
- 高效性:主要體現(xiàn)在這四個(gè)方面,提供Cache機(jī)制減少數(shù)據(jù)讀取的IO消耗、DAG引擎減少中間結(jié)果到磁盤的開銷、使用多線程池模型來(lái)減少task啟動(dòng)開銷、減少不必要的Sort排序和磁盤IO操作。
- 代碼簡(jiǎn)潔:解決同一個(gè)場(chǎng)景模型,代碼總量能夠減少2~5倍。從以前使用MapReduce來(lái)寫模型轉(zhuǎn)換成spark,這點(diǎn)我是切身體會(huì)。
理解spark離不開讀懂RDD
- spark2.0雖然已經(jīng)發(fā)測(cè)試版本和穩(wěn)定版本,但是遷移有一定成本和風(fēng)險(xiǎn),目前很多公司還處于觀望階段。
- RDD(Resilient Distributed Datasets), 又稱彈性分布式數(shù)據(jù)集。
- 它是分布在集群中的只讀對(duì)象集合(由多個(gè)Partition構(gòu)成)。
- 它可以存儲(chǔ)在磁盤或內(nèi)存中(多種存儲(chǔ)級(jí)別),也可以從這些渠道來(lái)創(chuàng)建。
- spark運(yùn)行模式都是通過(guò)并行“轉(zhuǎn)換” 操作構(gòu)造RDD來(lái)實(shí)現(xiàn)轉(zhuǎn)換和啟動(dòng)。同時(shí)RDD失效后會(huì)自動(dòng)重構(gòu)。
從這幾個(gè)方面理解RDD的操作
- Transformation,可通過(guò)程序集合、Hadoop數(shù)據(jù)集、已有的RDD,三種方式創(chuàng)造新的RDD。這些操作都屬于Transformation(map, filter, groupBy, reduceBy等)。
- Action,通過(guò)RDD計(jì)算得到一個(gè)或者一組值。這些操作都屬于Action(count, reduce, saveAsTextFile等)。
- 惰性執(zhí)行:Transformation只會(huì)記錄RDD轉(zhuǎn)化關(guān)系,并不會(huì)觸發(fā)計(jì)算。Action是觸發(fā)程序執(zhí)行(分布式) 的算子。
一張圖概括RDD
知曉Spark alt="" width="550" />
一張圖知曉運(yùn)作模式
懂得spark本地模式和yarn模式的提交方式(不討論Standalone獨(dú)立模式)
如果說(shuō)上述的概念、執(zhí)行流程和運(yùn)作方式目的在于給做大數(shù)據(jù)挖掘的朋友一個(gè)印象,讓大家不至于盲目、錯(cuò)誤的使用spark,從而導(dǎo)致線上操作掉坑。那最后的本地模式測(cè)試和集群任務(wù)提交是必須要掌握的知識(shí)點(diǎn)。