basic spark or spark essentials(notes)
阿新 • • 發佈:2017-09-27
clas 運行 ffi class asi 失敗 ble nsf 通過
- parallelized,lazily transform,cache(),actions
- 算子
算子是RDD中定義的函數,可以對RDD中的數據進行轉換和操作。數據轉化為Spark中的數據塊,通過BlockManager進行管理。
- Transformation:
- value類:不觸發提交作業,處理Value型數據
- Key-Value:不觸發提交作業,處理(k,v)型數據
- Action: 觸發SparkContext提交Job作業
- KEY-VALUE
reduceByKey(func)=>(k,v) 對key一樣的piar的value進行lambda
sortByKey()
groupByKey()
- Use Case
1 大量var的單一或叠代job 只讀table的lookup;ML裏的vector計算
2 job執行時有count事件
- broadcast var
- accumulators
- 只能被關聯op加運算,提高parallel counters and sums,只有driver可讀,task不能。
- 在action中每個task只能更新一次accm,而transformation中則不一定。transformation可能需要運行多次如果一個node很慢或失敗。=>accum在transformation中只能用於debug
- def f(x): {global accum;accum+=x} rdd.foreach(f)
只讀var(a large dataset) cached on workers,無論多少tasks只ship給worker一次-using efficient broadcast algorithm
driver: sc.broadcast([1,2,3])
worker: broadcasVar.value
- example for broadcast var--contact中的所屬國家統計
1建一個表2求(k,v)的function3將此function放入map中
4spark自動創建一個closure包含這個function以及1所建立的表,一起發送給worker
計算第二個的時候,4將被spark重復
=>broadcast to all workers ,使4不用重復
- example for accumulators--空行count
1開始設置accum為0 2func:空行則accum+1 否則返回line.split(" ")
3將func為參用flatMap file.flatMap(func) 對每一行func,返回一seq為line以" "分割的每個word
- groupByKey join groupWith
- saveAsTextFile saveAsSequenceFile
basic spark or spark essentials(notes)