RDD实战

第一阶段(1-3月):会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战。课程会涵盖Scala编程详解、Spark核心编程、Spark SQL和Spark       Streaming、Spark、GraphX、SparkR、Machine Learning、Spark内核以及源码剖析、性能调优、企业级案例实战等部分

第二阶段(Spark超大规模大数据案例实战):使用了Spark技术生态栈中的Spark Core、Spark SQL、Spark Streaming、SparkR、Machine Learning,进行离线计算和实时计算业务模块的开发、数据的关联性分析、用户行为模式和特征的训练与应用、用户网络的社区发现、用户影响力、能量传播、标签传播、标签推理、人群划分、年龄段预测、商品交易时序跳转

本期内容:
    1 RDD实战
    2 RDD的Transformation与Action
    3 RDD执行手动绘图

RDD操作:三种操作Transformation(算子)和action(得到结果)、controller(容错和性能优化的支持checkpoint和(Cache)persist)。
    1、transformation是对已有的RDD创建新的RDD,操作是具有Lazy特性,也就是说在transformation对元素进行处理的时候,只是标记对元素继续处理,不会真正的执行,除非遇到了action或checkpoint时才会真正执行,所以这对优化用户编写的Spark应用程序有很大作用;
    2、action会产生一个job。


reduce满足结合律和交换律,因为不知道传过来的数据的类型所以需要满足结合律,在此基础上满足交换律。


RDD实战:统计不同行的单词个数
object CountLines {
  def main(args:Array[String]): Unit ={
    val conf = new SparkConf()
    val sc = new SparkContext(conf)
    val line = sc.textFile("C:\\Appli\\Haha.txt")
    val linesCount = line.map(li => (li,1))
    val text = linesCount.reducrByKey(_+_)
    text.collect.foreach(pair =>println(pair._1 + ":" + pair._2 ))
  }
}
     使用collect,会将会分布在不同的节点上数据收集起来放在tuple数组中,每个Array中有一个元素,因为ReduceByKey(_+_)产生的key,value是一个tuple元组。若上面代码不使用collect的话,在local模式上能够运行,但是在集群上会报错。

def collect(): Array[T] = withScope {
  val results = sc.runJob(this, (iter: Iterator[T]) => iter.toArray)
  Array.concat(results: _*)
}
在集群上面运行,ReduceByKey(_+_,1)数字1 为并行度,会产生一个结果文件。



第一个Stage有88个任务分片,因为有88个处理文件,并且大小都小于128M,所以还是把它看成一个文件,而saveAsTextFile产生一个文件,因为在ReduceByKey中指定并行度为1。若前面指定了一个并行度,后面会产出一个文件,因为并行度会遗传。设置多少并行度,就会有多少Partition。


第一个Stage有88个任务分片,因为有88个处理文件,并且大小都小于128M,所以还是把它看成一个文件,而saveAsTextFile产生一个文件,因为在ReduceByKey中指定并行度为1。若前面指定了一个并行度,后面会产出一个文件,因为并行度会遗传。设置多少并行度,就会有多少Partition。





王家林老师是大数据技术集大成者,中国Spark第一人:

DT大数据梦工厂

新浪微博:www.weibo.com/ilovepains/

微信公众号:DT_Spark

博客:http://.blog.sina.com.cn/ilovepains

TEL:18610086859

Email:18610086859@vip.126.com





     
     


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值