標籤(空格分隔): Sparkshell
學習中的知識點:函數式編程、泛型編程、面向對象、並行編程。express
任何工具的產生都會涉及這幾個問題:apache
思考: 數據規模達到一臺機器沒法處理的時候,如何在有限的時間內對整個數據集進行遍歷及分析?編程
Google針對大數據問題提出的一些解決方案:框架
Hadoop是根據MapReduce和GFS兩大論文所作的開源實現,所以,它主要解決2大問題:數據存儲,分佈式計算框架。
分佈式
YARN是Hadoop2和Hadoop1的最大區別,將集羣管理自己獨立出來。而計算模型則更加專一於問題自己。函數式編程
Spark是由UC Berkeley的AMPLab出品的,主要創做者是Matei Zaharia. Spark與MapReduce位於Hadoop生態圈的同一層,主要解決分佈式計算框架的問題。函數
Spark與Hadoop有如下關係:工具
使用brew安裝:oop
brew install scala
下載包安裝
tar zxvf ~/Download/scala-2.12.1.tgz #解壓
mv ~/Download/scala-2.12.1 ~/Download/scala #重命名
mv ~/Download/scala /usr/local/share/ #將文件夾放到合適的位置
修改環境變量,若是不是管理員可以使用 sudo 進入管理員權限,修改配置文件profile,在文件的末尾加入:
export PATH="$PATH:/usr/local/share/scala/bin"
驗證
$ scala
顯示:Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
Type in expressions to have them evaluated.
Type :help for more information.
使用brew安裝
$ brew install apache-spark
cd /usr/local/Cellar/apache-spark/1.3.0/bin/
./spark-shell
啓動spark在spark-shell中完成單詞統計:
val file = sc.textFile("/usr/local/Cellar/apache-spark/1.3.0/README.md") // 以空格爲拆分標誌,將文件中的每一行分割爲多個單詞 val words = file.flatMap(line => line.split(" ")) // 對每個單詞進行計數 val wordNumber = words.map(w => (w, 1)) // 將單詞進行分類合併,計算每一個單詞總的出現次數 val wordCounts = wordNumber.reduceByKey(_+_) //將全部單詞及其出現次數打印出來 wordsCounts.foreach(println)
上述工做的簡單表述形式:
sc.textFile("/usr/local/Cellar/apache-spark/1.3.0/README.md") .flatMap(line => line.split(" ")) .map(w => (w, 1)) .reduceByKey(_+_) .foreach(println)