Spark Streaming-01初识

基于Spark core API 的一个扩展,处理实时数据流

Spark Core 模型是RDD SparkContext

Spark SQL  模型是DF/DS SparkSession

Spark Streaming 模型是DStream StreamingContext


处理实时数据流过程

Spark Streaming

input(Flume、Kafka、Socket) --> compute(基于core之上的一些算子) --> output(filesystem、hbase、sql、nosql)

Spark Streaming on ML and gragh processing algorithms,体现了spark一站式解决方案的特性

1、在内部,它的工作原理如下。 Spark Streaming接收实时输入数据流并将数据分成批,然后由Spark引擎处理,以批量生成最终结果流。


数据流进来先离散化,分成多个batch,然后持久化存两份,一个在executor一份存内存,然后对每个batch进行批处理


SparkStreaming定义

在定义上下文之后,您必须执行以下操作。 

  1. 通过创建输入DStream来定义输入源。
  2. 通过将转换和输出操作应用于DStream来定义流式计算。
  3. 开始接收数据并使用streamingContext.start()处理它。
  4. 等待使用streamingContext.awaitTermination()停止处理(手动或由于任何错误)。
  5. 可以使用streamingContext.stop()手动停止处理

SparkStreaming要点

  1. 一旦Context已经启动,就不能建立或添加新的流式计算。
  2. 一旦Context被停止,它就不能被重新启动。
  3. 同时只有一个StreamingContext可以在JVM中处于活动状态。
  4. StreamingContext上的stop()也会停止SparkContext。 要仅停止StreamingContext,请将stop()的可选参数stopSparkContext设置为false。
  5. 只要先前的StreamingContext在创建下一个StreamingContext之前停止(不停止SparkContext),就可以重新使用SparkContext来创建多个StreamingContext。

Discretized Streams (DStreams)

DStream是Spark Streaming提供的基本抽象,它表示连续的数据流,即从源接收的输入数据流或通过转换输入流生成的已处理数据流。在内部,DStream由连续的RDD系列表示,DStream中的每个RDD都包含来自特定时间间隔的数据,如下图所示。(下图将一个DStream拆分成4个RDD)


SparkStreaming测试

SparkStreaming支持三种socket通信:socketTextStream    socketStream    rawSocketTextStream

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}


object SocketWordCountApp {
  def main(args: Array[String]){
    val sparkConf = new SparkConf().setAppName("SocketWordCountApp").setMaster("local[2]")
  val ssc = new StreamingContext(sparkConf,Seconds(10))

    val lines = ssc.socketTextStream("hadoop",9999)
    lines.flatMap(_.split(",")).map((_,1)).reduceByKey(_+_).print

    ssc.start()
    ssc.awaitTermination()
  }
}

划重点:运行一个有reciver的SparkStreaming任务,至少要分配两个core,一个用于reciver,一个用于处理数据


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值