Spark从入门到精通第十七课:SparkStreaming 对比Storm && SparkStreaming的核心算子

   1、SparkStreaming && Storm的区别?

答:
    SparkStreaming 是微批处理,不是真正的实时,它的实时性取决于自定义的间隔是多大。
    Storm是真正意义上的实时处理,因为它是一条一条处理数据的。但Storm的吞吐量比起SparkStreaming是要小很多的。
    SparkStreaming依托于Spark,所以SparkStreaming可以也很好地和其他的Spark项目整合在一起。实现一站式开发。
    Storm的事务机制更加的完善。

   2、SparkStreaming处理数据流程?

答:
   receiver task接收kafka/flume/twitter/mq/tcp端口数据,根据时间间隔封装在batch中,batch封装在rdd中,rdd封装在DStream之中。
    然后可以根据DStream的ransformations算子对数据进行处理,由OutputOperate算子进行触发执行。
    批次间隔大于job执行时间,则处理等待,集群资源不能充分利用。反之则数据堆积,甚至OOM。
    批次间隔的调整结合web ui来设置。

3、SparkStreaming核心算子

transformation算子

1、updateStateByKey

    统计自从SparkStreaming启动以来,所有key的状态
    需要设置checkpint,状态是保存在Checkpoint中    ssc.checkpoint("目录")
        batchinterval<10秒,10秒checkpoint一次
        batchinterval>10秒,batchinterval间隔checkpoint一次


2、reduceByKeyAndWindow

    每隔一段时间统计特定时间长度内的数据  
    窗口长度wi  滑动间隔si   wi和si必须是batchinterval的整数倍
示例:
    xx.reduceByKeyAndWindow((v1:Int,v2:Int)=>(v1+v2),Durations.seconds(15),Durations.seconds(5)))           
    每隔5秒将过去15秒数据的value值相加
优化:加后一个减前一个
    xx.reduceByKeyAndWindow((v1:Int,v2:Int)=>(v1+v2),(v1:Int,v2:Int)=>(v1-v2),Durations.seconds(15),Durations.seconds(5))) 
    优化机制必须设置checkpoint保存前一次计算的结果   ssc.checkpoint("目录")



3、window

    每隔一段时间收集特定时间长度内的数据生成一个DStream
    窗口长度wi  滑动间隔si   wi和si必须是batchinterval的整数倍
示例:
    lines.window((Durations.seconds(15),Durations.seconds(5)))    
    之后可以使用其它转换算子进行操作


4、transform

    可以获取DStream中的RDD,对获取的RDD使用算子操作,但是一定要返回RDD,返回的RDD被封装到DStream
    transform算子内,获取的RDD的算子外的代码是在Driver端执行,也可以动态改变广播变量的值。


5、map、flatMap、filter
    略

OutPutOperator算子

1、foreachRDD
    可以获取DStream中RDD,对RDD使用RDD的算子操作,但是一定要对RDD使用action算子操作
    froeachRDD算子内,获取的RDD的算子外的代码是在Driver端执行,也可以动态改变广播变量的值

2、print、saveAsTextFile
    略

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值