实时流处理学习(四)- SparkStreaming

核心概念:

(1) StreamingConext

通过StreamingContext可以做定义输入源等事情。

  • StreamingContext启动后不能重启
  • 一个StreamingContext只能存活在一个JVM中
  • 一个SparkContext可以用来创建多个StreamingContext

 

(2) DStream(Discretiezed Streams)

SparkStreaming 基础抽象:持续数据流, DStream代表这持续不断的RDD

 

DStream的操作底层是针对RDD的操作

(3) Input Dstream and Receivers

除了文件系统,每一个Input Dstream 都需要关联一个Receivers,Receivers接收并存储

(4) Transformations : 转化DStream

(5) Input DStreams Output Operations

 

实战案例:

案例1: Spark Streaming 处理socket数据

object NetworkWordCount {

def main(args:Array[String]) :Unit = {

val sparkConf = new SparkConf().setMaster("local[2]").setAppName("App");

val ssc = new StreamingContext(sparkConf, Seconds(5))

val lines = ssc.socketTextStream("localhost",6789)

val result = lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

result.print()

ssc.start()

ssc.awaitTermination()

}}

填坑:netcat     控制台:nc -lp 6789

不能写local[1]的原因:

 

报错:spark.master should be set as local[n], n > 1 in local mode if you have receivers to get data, otherwise Spark jobs will not get resources to process the received data.

 

案例2:Spark Streaming处理HDFS文件数据

object FileWordCount {

def main(args:Array[String]): Unit = {

val sparkConf = new SparkConf().setMaster("local[2]").setAppName("FileWordCount");

val ssc = new StreamingContext(sparkConf, Seconds(15))

val lines = ssc.textFileStream("C://TEST/")

lines.print()

lines == null

val result = lines.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

result.print()

ssc.start()

ssc.awaitTermination()

}}

以windows例:

注意:必须以流方式写入数据才能被检测到

文件需要是同一个格式,且不能有嵌套目录

处理过后的文件不会再被处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值