1 資料分析導論
1.1 spark 是什麼
1.1.1 特點(記憶體中計算)
實作了快速而通用的叢集計算平台。擴充了MapReduce計算模型,支援更多的計算模式,包括互動處理,批處理,流出來,疊代算法。提供豐富的接口,基于python,scala,java,sql簡單應用api。
1.2 spark 組成
Spark SQL 結構化資料,Spark Streaming 實時計算,MLib 機器學習,Gragh X 圖計算,Spark Core , 獨立排程器 ,YARN ,Mesos
1.2.1 Spark SQL 結構化資料
spark sql 是 spark 用來操作結構化資料的程式包,支援多種資料源(Hive Sql , parquet , json)。與RDD程式設計的資料操作方式相結合。
1.2.2 Spark Streaming 實時計算
spark streaming 是spark 提供對實時資料進行流失計算的元件(消息隊列,伺服器日志)。
1.2.3 MLlib 機器學習
MLlib 提供了多種的機器學習算法,分類,回歸,聚類,協同過濾等。提供模型評估、資料導入等額外的支援功能
1.2.4 Gragh x 圖計算
Gragh x 圖計算算法
1.2.5 Spark Core
Spark Core 實作 spark 的基本功能,包含任務排程,記憶體管理,錯誤恢複,與存儲系統互動子產品。對彈性分布式資料集RDD的定義
1.2.6 叢集管理器
設計實作可以一個計算結點到幾千個計算結點之間伸縮計算,支援各種叢集管理器
2 spark 下載下傳與入門
2.1 下載下傳連結
cd ~
tar -xf spark-1.2.0-bin-hadoop2.4.tgz
cd spark-1.2.0-bin-hadoop2.4
ls
/bin :spark互動可執行檔案
/core streaming python 主要元件源代碼
/examples 可以檢視運作的API
2.2 Spark - pySpark與scala的shell
啟動指令
bin/pySpark bin/spark-shell
修改日志級别:/conf/log4j.properties log4j.rootCategory=INFO,console=>WARN,console
2.2.1 Scala 行數統計
val lines = sc.textFile("README.md");
lines.count();
lines.first();
退出指令
ctrl + d
2.3 Spark 核心概念
每一個Spark 應用都由一個驅動器程式發起叢集上的各種并行操作,驅動器程式包含應用main函數且定義叢集上的分布式資料集。驅動程式通過一個SparkContext對象通路spark。這個對象代表着對計算叢集的一個連接配接。shell啟動自動建立一個sparkcontext對象。然後就可以建立RDD。然後進行各種操作。比如sc.textFile()
val lines = sc.textFile("README.md");
var pyLines = lines.filter(_.contains("Python"))
pyLines.first();
2.3.1 初始化SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("test")//叢集的url,應用名稱初始化配置val sc = new SpackContext(conf)//建立RDD
2.3.2 單詞統計
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
val conf = new SparkConf().setMaster("local").setAppName("test")//叢集的url,應用名稱初始化配置
val sc = new SpackContext(conf)//建立RDD
val input = sc.textFile(inputFile)
val words = input.flatMap(line =>line.split(" "));
val counts = words.map(word=>(word, 1)).reduceByKey{case(x,y) => x+y}