1. 程式人生 > >basic spark or spark essentials(notes)

basic spark or spark essentials(notes)

clas 運行 ffi class asi 失敗 ble nsf 通過

  • parallelized,lazily transform,cache(),actions
  • 算子

算子是RDD中定義的函數,可以對RDD中的數據進行轉換和操作。數據轉化為Spark中的數據塊,通過BlockManager進行管理。

  1. Transformation:
    1. value類:不觸發提交作業,處理Value型數據
    2. Key-Value:不觸發提交作業,處理(k,v)型數據
  2. 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事件

  1. broadcast var
  2. accumulators
    1. 只能被關聯op加運算,提高parallel counters and sums,只有driver可讀,task不能。
    2. 在action中每個task只能更新一次accm,而transformation中則不一定。transformation可能需要運行多次如果一個node很慢或失敗。=>accum在transformation中只能用於debug
    3. 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)