Spark Streaming介绍以及案例

本文介绍了SparkStreaming作为Spark核心API扩展,实现高吞吐、容错的数据流处理能力。详细解析了其工作原理,包括数据来源如Kafka、Flume,高级函数处理如map、reduce、join和window,以及数据输出到文件系统或数据库。并通过一个具体案例演示了如何使用SparkStreaming进行实时数据流处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概观

Spark Streaming是核心Spark API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流处理。

数据来源:Kafka,Flume,Kinesis或TCP套接字等,

可以使用高级函数进行复杂算法进行处理map,例如reducejoinwindow

处理后的数据可以推送到文件系统,数据库等

 

Spark Streaming

它的工作原理:

Spark Streaming接收实时输入数据流并将数据分成批处理,然后由Spark引擎处理以批量生成最终结果流

Spark Streaming

Spark Streaming提供称为离散流DStream的高级抽象,表示连续的数据流。DStream可以从来自Kafka,Flume和Kinesis等源的输入数据流创建,也可以通过在其他DStream上应用高级操作来创建。在内部,DStream表示为一系列 RDD。

案例介绍

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

object StreamDemo {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local[2]").setAppName("MyTest")
    val ssc = new StreamingContext(conf,Seconds(1))
//创建一个DStream来表示来自TCP源的流数据,指定为主机名(例如localhost)和端口(例如9999)。
//此linesDStream表示将从数据服务器接收的数据流。DStream中的每条记录都是一行文本
    val lines = ssc.socketTextStream("localhost",9999)
//flatMap是一对多DStream操作,它通过从源DStream中的每个记录生成多个新记录来创建新的DStream。在这种情况下,每行将被分成多个单词,单词流表示为wordsDStream。
    val words = lines.flatMap(_.split(" "))
    val pairs = words.map(word => (word,1))
    val wordCount = pairs.reduceByKey(_+_)
    wordCount.print()
//Spark Streaming仅设置启动时将执行的计算,并且尚未启动实际处理。要在设置完所有转换后开始处理
    ssc.start()
    ssc.awaitTermination()
  }
}

使用端口发送数据:

nc -lk 9999

查看端口使用情况:

lsof -i:9999

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值