Introduction to Big Data with Apache Spark 课程总结
課程主要實用內(nèi)容:
1.spark實驗環(huán)境的搭建 2.4個lab的內(nèi)容 3.常用函數(shù) 4.變量共享 1.spark實驗環(huán)境的搭建(windows)a. 下載,安裝visualbox
? ??管理員身份運行;課程要求最新版4.3.28,如果c中遇到虛擬機打不開的,可以用4.2.12,不影響
b. 下載,安裝vagrant,重啟
? ? 管理員身份運行
c. 下載虛擬機
? ? c1.將vagrant加入path,D:\HashiCorp\Vagrant\bin
? ? c2.創(chuàng)建虛擬機存放的目錄,比如myvagrant
? ? c3.下載文件mooc-setup-master.zip,解壓后,拷貝Vagrantfile到myvagrant
? ? c4.打開visual box圖形界面,進入cmd,cd到myvagrant,敲命令 ? vagrant up
? ? ? ? ?開始下載虛擬機,并打開,如果下載完成,但是打開虛擬機出錯;
? ? ? ? ?可以到visual box 圖形界面點擊打開,碰到一下錯誤,可嘗試用4.2.12版visual box
? ? ? ??
使用說明:i.打開關(guān)閉虛擬機:打開visual box 界面,cd進入myvagrant
? ? ? ? ? ? ? ? ? ? ?vagrant up 打開虛擬機,vagrant halt 關(guān)閉虛擬機
? ? ? ? ? ? ? ? ? ii.ipython notebook,進入http:\\localhost:8001
? ? ? ? ? ? ? ? ? ? ?停止正在運行的notebook,點擊running,停止
? ? ? ? ? ? ? ? ? ? ?點某 .py文件,運行note book
? ? ? ? ? ? ? ? ?iii.下載ssh軟件,可登入虛擬機,地址為127.0.0.1,端口2222,用戶名vagrant,密碼vagrant
? ? ? ? ? ? ? ? ? ? ?進入后,敲pyspark,可進入pyspark交互式界面
3.常用函數(shù)
?
Spark中Rdd的生命周期
創(chuàng)建RDD(parallelize、textFile等)
對RDD進行變換
(會創(chuàng)建新的RDD,不會改變原RDD,有
? ?1.對每個元素進行操作-map,flatMap,mapValues?
? ?2.篩選 ?filter
? ?3.排序 sortBy
? ?3.合并結(jié)果 reduceByKey,groupByKey
? ?4.合并兩個rdd union,join,leftJoin,rightJoin)
以上步驟中rdd都只相當(dāng)于一個操作手冊,并沒有真實地在內(nèi)存中產(chǎn)生數(shù)據(jù),稱為lazy?evaluation
?
緩存rdd到內(nèi)存中 cache() ,判斷是否cache,訪問?.is_cached屬性
觸發(fā)evaluation(包括top,take,takeOrdered,takeSample,sum,count,distinct,reduce,collect,collectAsMap)
?
4.變量共享
spark有兩種變量共享方式
a.廣播 broadcast,broadcast后的變量每個partition都會存儲一份,但是只能讀取,不能修改
>>>?b=sc.broadcast([1,2,3,4,5])
>>>?sc.parallelize([0,0]).flatMap(lambdax:b.value)
b.累加器 accumulator,只能寫,不能在worker被讀取
如果累加器只是一個標(biāo)量,使用很簡單
>>>?rdd = sc.parallelize([1,2,3]) >>>?def f(x): ...?global a ...? a += x >>>?rdd.foreach(f) >>>?a.value 13如果累加器是一個向量,需要定義AccumulatorParam,且zero方法和addInPlace都要實現(xiàn)
>>>?from pyspark.accumulators import AccumulatorParam >>>?class VectorAccumulatorParam(AccumulatorParam): ...? def zero(self, value): ...? return [0.0] * len(value) ...? def addInPlace(self, val1, val2): ...? for i in xrange(len(val1)): ...? val1[i] += val2[i] ...? return val1 >>>?va = sc.accumulator([1.0, 2.0, 3.0], VectorAccumulatorParam()) >>>?va.value [1.0,?2.0,?3.0]>>>?defg(x): ...?global va ...?va += [x] * 3 >>>?rdd.foreach(g) >>>?va.value [7.0,?8.0,?9.0]?
轉(zhuǎn)載于:https://www.cnblogs.com/porco/p/4642512.html
總結(jié)
以上是生活随笔為你收集整理的Introduction to Big Data with Apache Spark 课程总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OC本学习笔记Foundatio框架集
- 下一篇: 关于selenium+python的框架