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