Spark Streaming流数据处理框架

一 .看小栗子,说说spark streaming程序构建流程

val ssc = new StreamingContext(args(0),"WordCount",Seconds(1))
val lines = ssc.socketTextStream(args(1),args(2).toInt)
val words = lines.flatMap(_.split(" "))
val wordCounts = words.map(x = > (x,1)).reduceBuKey(_+_)
wordCounts.print()
ssc.start()
ssc.awitTermination()
ssc.stop()
构建 Spark Streaming 程序主要分为以下几个步骤:
(1) 创建StreamingContext对象: 指明master,设定名称(即如上:WordCount)等.需要注意的是参数Seconds(1),spark Streaming 需要指定处理数据的时间间隔,如上设置1s,则spark streaming会以1s为时间窗口进行数据处理。此参数需要根据用户的需求和集群的处理能力进行适当设置。

(2)创建 InputDStream(数据源):如上 socketTextStream ,spark streaming将以套接字连接作为数据源读取数据。spark streaming支持多种不同的数据源,比如:
kafkaStream,
flumeStream,
fileStream,
networkStream等。
(3)操作Dstream:对于从数据源获得的Dstream,用户可以在其基础上进行各种操作,如上面小栗子中所示的操作就是一个典型的单词计数执行流程:
对当前时间窗口内从数据源得到的数据首先进行分词,然后使用mapreduce算法映射和计算,最后使用print()输出结果。
(4)启动spark streaming :之前所有步骤只创建了执行流程,程序没有真正连接上数据源,也没有对数据进行任何操作,只是设定好了所有的执行计划,当 ssc.start() 启动后,程序才真正进行所有预期的操作。

总结:

一个spark streaming应用程序与spark应用程序非常相似,用户构建执行逻辑、内部主驱动程序来调用用户实现的逻辑,持续不断的以并行的方式对输入的流式数据进行处理。
spark streaming 抽象了离散流 Dstream,它包含一组连续的RDD(分布式数据集),这一组连续的RDD代表了连续的流式数据。Dstream可以通过实时的输入数据(如从套接字接口或者从kafka消息队列中得到的数据)构建,也可以通过现有的Dstream转换得到。这些转换操作包括:
map,
reduce,
window等

Spark Streaming 的基本概念

(1)spark streaming 在0.9版本开始就将kafka、flume之类的输入接口从spark核心模块去除了,想要使用这些数据源必须将这些包依赖关系添加到maven工程中去:

SourceArtifact
kafkaspark-streaming-kafka_2.10
flumespark-streaming-flume_2.10

在建立好依赖关系后,就可以创建 StreamingContext 来初始化应用程序。StreamingContext是Spark Streaming程序的总入口,因此需要创建StreamingContext:

new StreamingContext(master,appName,batchDuration,[sparkHome],[jars])

待续。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值