3. 掌握 Spark Streaming 编程——aboutyun

1、什么是 Spark Streaming?

Spark Streaming 可以近实时地从 Kafka,Flume,TCP socket 接受数据,并对其进行实时处理。

它的原理是将流式计算转为一批很小的的批处理作业。

2、Streaming 中的常用概念

离散流(DStream):Streaming对内部持续的实时数据流的抽象描述,对Dstream的操作最终都转为了对 RDD 的操作

批数据(batch data):这是化整为零的第一步,将实时流数据以时间片为单位进行分批,将流处理转化为时间片数据的批处理

批处理时间间隔( batch interval):这是人为地对流数据进行定量的标准,以时间片作为我们拆分流数据的依据。一个时间片的数据对应一个RDD实例

窗口长度(window length):一个窗口覆盖的流数据的时间长度。必须是批处理时间间隔的倍数

滑动时间间隔(slide interval ):前一个窗口到后一个窗口所经过的时间长度。必须是批处理时间间隔的倍数,默认同批处理时间间隔

 

3、 StreamingContext

在 Spark Streaming 当中,StreamingContext是整个程序的入口,其创建方式有多种,最常用的是通过 SparkConf 来创建,创建时,需要传入批处理时间间隔。 DStream 创建需要依赖于它。 StreamingContext 创建成功后,使用输入源(kafka、flume、tcp socket等等)来创建 Dstream
 

import org.apache.spark._ 
import org.apache.spark.streaming._
val conf = new SparkConf().setAppName(appName).setMaster(master) 
val ssc = new StreamingContext(conf, Seconds(1))
// 创建 socket 类型 DStream
val lines = ssc.socketTextStream("localhost", 9999)  //消费者

 

4、 Streaming 操作流程

当创建完成StreamingContext之后,再按下列步骤进行:

1)通过输入源创建InputDStreaim

2)对DStreaming进行transformation和output操作,这样操作构成了后期流式计算的逻辑

3)通过StreamingContext.start()方法启动接收和处理数据的流程

4)使用streamingContext.awaitTermination()方法等待程序处理结束(手动停止或出错停止)

5)也可以调用streamingContext.stop()方法结束程序的运行

关于StreamingContext有几个值得注意的地方:

1)StreamingContext启动后,增加新的操作将不起作用。也就是说在StreamingContext启动之前,要定义好所有的计算逻辑

2)StreamingContext停止后,不能重新启动。也就是说要重新计算的话,需要重新运行整个程序。

3)在单个JVM中,一段时间内不能出现两个active状态的StreamingContext

4)调用StreamingContext的stop方法时,SparkContext也将被stop掉,如果希望StreamingContext关闭时,保留SparkContext,则需要在stop方法中传入参数stopSparkContext=false

 

5、 Streaming WordCount 示例

import org.apache.spark._ 
import org.apache.spark.streaming._ 
val sparkConf = new SparkConf().setAppName("StreamingWordCount").setMaster("local[4]") 
val ssc = new StreamingContext(sparkConf, Seconds(2)) 
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)
wordCounts.print()
ssc.start() 
ssc.awaitTermination()

 

设计到IDEA软件下载scala插件的地址 https://plugins.jetbrains.com/plugin/1347-scala/versions

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值