转换操作
转换操作分为有状态转换和无状态转换
- 在无状态转换操作中,每个批次的处理不依赖于之前批次的数据
- 在有状态状态操作中,需要使用之前批次的数据或是中间结果来计算当前批次的数据,有状态操作基于滑动窗口的转化操作和追踪状态变化的转化操作
Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等,但是这些并不能满足我们的所有需求,所以spark streaming提供了自定义数据源的功能,只需要继承 Receiver,并实现 onStart、onStop 方法来自定义数据源采集。
1 | // 自定义数据源 |
在使用自定义数据源时,只需要去接收该数据源数据即可
1 | val sparkConf = new SparkConf().setMaster("local[*]").setAppName("sparkStreaming") |
消息发送一致性是指业务操作成功了,有这个操作产生的消息一定要发送出去,否则就丢失消息了
消息处理时要进行持久化操作,表示收到消息了,此时就可以恢复给发布者消息已收到,然后在进行业务操作,如果业务操作失败,则进行补偿机制(定时任务),重新执行失败的任务