Spark多語言編程實踐
Spark目前支持scala、python、JAVA編程。
作為Spark的原生語言,scala是開發(fā)Spark應(yīng)用程序的***,其優(yōu)雅簡潔的代碼,令開發(fā)過mapreduce代碼的碼農(nóng)感覺象是上了天堂。
Spark提供了python的編程模型PySpark,使得python可以作為Spark開發(fā)語言之一。盡管現(xiàn)在PySpark還不能支持所有的Spark API,但是我們相信以后的支持度會越來越高;同時作為NOSQL的主力開發(fā)工具之一的python,一旦將NOSQL和Spark結(jié)合后,我們可以想象以后的發(fā)展前景。
至于Java,時間和精力允許的情況下再選吧。不過作為作為長期坐著寫代碼的碼農(nóng),應(yīng)該積極參加登山、會友之類的活動,為身體著想,還是不要選JAVA來編寫Spark程序了。
廢話了一堆,還是進(jìn)行Spark的編程實踐。
1:開發(fā)環(huán)境
主機(jī)wyy(192.168.100.111),內(nèi)存16G
hadoop2.2.0偽分布式部署
Spark0.9.0 Standalone單機(jī)部署
python2.7.4
scala2.10.3
IDE使用IntelliJ IDEA 13.1
2:實驗項目
2.1:sogou日志數(shù)據(jù)分析
實驗數(shù)據(jù)來源:sogou精簡版數(shù)據(jù)下載地址
數(shù)據(jù)格式說明:
訪問時間\t用戶ID\t[查詢詞]\t該URL在返回結(jié)果中的排名\t用戶點擊的順序號\t用戶點擊的URL
其中,用戶ID是根據(jù)用戶使用瀏覽器訪問搜索引擎時的Cookie信息自動賦值,即同一次使用瀏覽器輸入的不同查詢對應(yīng)同一個用戶ID。
以上數(shù)據(jù)格式是官方說明,實際上該數(shù)據(jù)集中排名和順序號之間不是\t分割,而是空格分割。
A:用戶在00:00:00到12:00:00之間的查詢數(shù)
B:搜索結(jié)果排名第?,但是點擊次序排在第二的數(shù)據(jù)有多少?
C:一個session內(nèi)查詢次數(shù)最多的用戶的session與相應(yīng)的查詢次數(shù)
2.2:Spark steaming實驗
A:自己寫一個能隨機(jī)產(chǎn)生A,B,C,D,E,F,G的程序,每一秒鐘輸出一個字母。完成以下工作:
B:每隔20秒計算出出現(xiàn)次數(shù)最多字母及出現(xiàn)次數(shù)
C:每隔10秒計算出前20秒出現(xiàn)次數(shù)最多的字母及次數(shù)
3:多語言編程實現(xiàn)