码迷,mamicode.com
首页 > 其他好文 > 详细

basic spark or spark essentials(notes)

时间:2017-09-27 00:47:56      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:split   操作   运算   orm   tac   lock   rtb   更新   tran   

  • 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)

标签:split   操作   运算   orm   tac   lock   rtb   更新   tran   

原文地址:http://www.cnblogs.com/yumanman/p/7599491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!