dstream的两种类型
来源:互联网 发布:苹果cms定时规则 编辑:程序博客网 时间:2024/05/16 01:45
dstream的两种模式,一种是有状态,一种无状态
无状态就是说每批次的处理不依赖于之前批次的数据,如map,filter,reducebykey等,都是无状态转化操作。场景,例如汇总sum类操作
相对的有状态操作就是依赖之前的批次,包括滑动窗口的转化操作和追踪状态变化的转化操作。
场景是:滑动窗口,去重类操作,比如每次数据批次过来,我需要基于历史的去重,有状态占用的存储会多一些
有状态操作:主要有两种类型,滑动窗口和updatestatebykey
滑动窗口:近10分钟最热帖子的排行,或近10分钟销售量计算。
场景:实时计算当天销售额,它的开始结束时间点是确定的,所以它不是滑动窗口。
使用updatestatebykey(),key代表维度,如果按天计算销售额,key就是日期,如果按天,地区计算销售额,key就是date+地区
updatestatebykey也就是在如果key代表日期,就是说每次更新的时候就按照日期去更新它的值。
updatestatebykey用的更多一些。滑动窗口是一个时间段滑动操作,后者则是根据每个key进行跟踪的。
有状态操作需要在你的streamingcontext中打开检查点机制来确保容错性,设置检查点ssc.checkpoint("hdfs://..."),也可以使用本地路径(如/tmp)取代hdfs,就是用来存储数据的中间结果的。
api:streamingcontext。
对kafka来讲,数据生产和数据消费通常是两个不同职责的部门,数据生产是负责业务系统开发的部门,数据消费是数据加工的部门。
reducebykeyandwindows(_+_,_-_,minutes(10),seconds(2),2)//表明时间窗口是10分钟,没两秒钟更新一次。
kafkautils.createstream方式消费的简单代码格式如下:
===
val Array(zkQuorum, group, topics, numThreads) = args
val sparkConf = new SparkConf().setAppName("kafkaWordCount")
val ssc = new StreamingContext(sparkConf, Seconds(2))
ssc.checkpoint("checkpoint")
val topicMap = topics.split(",").map((_, numThreads.toInt)).toMap
val lines = KafkaUtil.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(x =>(x,1L)).reduceByKeyAndWindows(_+_,_-_,Minutes(10),Seconds(2),2)
wordCounts.print()
ssc.start()
ssc.awaitTermination()
===
- dstream的两种类型
- 两种类型的注释
- 两种类型的员工
- Cookie的两种类型
- 两种类型的开发周期
- 两种类型的页面分析
- 逻辑读的两种类型
- 两种类型的Java程序
- VB窗体的两种类型
- SQL的两种类型转换方式
- 广播事件的两种类型。
- 两种类型的probe request
- 读取文件的两种类型
- 两种类型的人, 不需要敏捷开发的实践
- C#中的两种类型
- swift新增两种类型
- button的两种类型和获取Commandname,CommandEventArgs
- Microsoft AJAX Library(6)两种类型的扩展
- Android PermissionChecker 权限全面详细分析和解决方案
- mysql 提交读 可重复读
- 分享3个jar库
- Fatal signal 11 (SIGSEGV) at 0x7bddf000 (code=1), thread 23703 (Thread-20582)
- mysql 两个查询结果 并 运算
- dstream的两种类型
- 百度地图之地理位置和反地理编码搜索
- openZoosUrl还可以这么玩
- QQ的第三登录授权完获得信息
- 简单总结下OPENCV访问像素值的方法
- 懒人收藏1
- 如何使用DOM创建XML
- 关于php pdo连接mysql,查询超时问题
- JTA事物