SparkStreaming---入门

文章目录

  • 1.SparkStreaming简介
    • 1.1 流处理和批处理
    • 1.2 实时和离线
    • 1.3 SparkStreaming是什么
    • 1.4 SparkStreaming架构图
  • 2.背压机制
  • 3.DStream案例实操

1.SparkStreaming简介

1.1 流处理和批处理

流处理和批处理是两种不同的数据处理方式,它们在处理数据的方式和特点上有所不同。

流处理(Stream Processing)是一种数据处理方式,它实时地处理数据流,即将源源不断的数据按照特定的规则进行实时处理。
批处理(Batch Processing)是一种数据处理方式,它将一段时间内的数据收集起来,然后一次性地进行处理。

1.2 实时和离线

实时和离线是数据处理中的两种不同方式,它们在处理速度和数据类型上有所区别。
实时处理是指数据处理的速度能够满足实时要求,通常是指对数据进行的处理能够在相应的时间内产生结果,并且结果能够及时反馈给用户或应用系统。实时处理通常用于需要快速响应的应用场景,如实时监控、实时交易等。
离线处理则是指数据处理的速度相对较慢,通常需要较长时间才能完成,而且不需要实时反馈结果。离线处理通常用于处理大规模的数据集,如数据分析、机器学习等。离线处理可以在非实时环境中进行,例如在晚上或者周末等时间进行批量数据处理。

实时一般来说以毫秒为单位,不可与流处理混为一谈,而离线相对来说是以时、天为单位。

1.3 SparkStreaming是什么

Spark Streaming是构建在Spark上的实时计算框架,扩展了Spark处理大规模流式数据的能力。但是SparkStreaming不能做到真正意义上的实时计算,实际上它是一种准实时(秒,分钟),微批次的数据处理框架。 它将连续不断的数据按固定的时间间隔进行切分,使其变为一个个连续的批次,进而按顺序对每一个批次进行处理。一般情况下,每一个批次都会很小,这就是微批次。Spark Streaming的目的是为了进行实时数据分析,但因为一批数据量比较小,又达不到离线的范畴,所以称为准实时。

SparkStreaming用于流式数据的处理,Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。结果也能保存在很多地方,如 HDFS,数据库等。
在这里插入图片描述

1.4 SparkStreaming架构图

和 Spark 基于 RDD 的概念很相似,Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作 DStream。 DStream 是随时间推移而收到的数据的序列。在内部,每个时间区间收到的数据都作为 RDD 存在,而 DStream 是由这些 RDD 所组成的序列(因此得名“离散化”)。所以简单来讲,DStream 就是对 RDD 在实时数据处理场景的一种封装。
在这里插入图片描述
在SparkStreaming中,会有一个专门接收器来接受从数据源输入的数据,并且将这些数据封装成离散化流(DStream)。之后的操作就是对DStream进行处理的。简单来讲,DStream就是对一系列RDD的封装。
在这里插入图片描述

2.背压机制

Spark 1.5 以前版本,用户如果要限制 Receiver 的数据接收速率,可以通过设置静态配制参数“spark.streaming.receiver.maxRate”的值来实现,此举虽然可以通过限制接收速率,来适配当前的处理能力,防止内存溢出,但也会引入其它问题。比如:producer 数据生产高于 maxRate,当前集群处理能力也高于 maxRate,这就会造成资源利用率下降等问题。为了更好的协调数据接收速率与资源处理能力,1.5 版本开始 Spark Streaming 可以动态控制数据接收速率来适配集群数据处理能力。背压机制(即 Spark Streaming Backpressure): 根据JobScheduler 反馈作业的执行信息来动态调整 Receiver 数据接收率。通过属性“spark.streaming.backpressure.enabled”来控制是否启用 backpressure 机制,默认值false,即不启用。

3.DStream案例实操

需求:实现WordCount 案例
使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统计不同单词出现的次数
Netcat(简称nc)是一款强大的命令行网络工具,用来在两台机器之间建立TCP/UDP连接,并通过标准的输入输出进行数据的读写。netcat下载地址https://eternallybored.org/misc/netcat/

  def main(args: Array[String]): Unit = {//1.初始化 Spark 配置信息val sparkConf = new SparkConf().setMaster("local[*]").setAppName("StreamWordCount")//2.初始化 SparkStreamingContext//处理区间为3s一次val ssc = new StreamingContext(sparkConf, Seconds(3))//3.通过监控端口创建 DStream,读进来的数据为一行行val lines = ssc.socketTextStream("localhost", 9999)//将每一行数据做切分,形成一个个单词val words = lines.flatMap(_.split(" "))val wordMap = words.map(word => (word, 1))val resultData = wordMap.reduceByKey(_ + _)resultData.print()//启动SparkStreamingContextssc.start()//等待接收数据ssc.awaitTermination()}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/451038.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基于django的公交线路查询系统mf383

1.个人信息的管理:对用户名,密码的增加、删除等 2.线路信息的管理:对线路的增加、修改、删除等 3.站点信息的管理:对站点的增加、修改、删除等 4.车次信息的管理:对车次的增加、修改、删除等 5.线路查询、站点查询 …

ping 不支持代理,命令行测试外网网址请使用 curl 测试,如何测试?

如果你想通过命令行测试外网网址的可达性,并且因为 ping 命令不支持通过代理服务器进行操作,你可以使用 curl 命令来测试。curl 是一个强大的工具,可以用来传输数据,它支持多种协议,包括 HTTP、HTTPS 等,而…

前端面试题:二叉树广度和深度遍历

试题:有如下树形数据结构,通过JavaScript对二叉树实现深度遍历和广度遍历 广度遍历: 通过JavaScript数组模拟栈的方式实现,首先节点入栈,然后从栈顶取出节点,放入数组,然后对取出的节点进行遍历…

深度学习驱动下的自然语言处理进展及其应用前景

文章目录 每日一句正能量前言技术进步应用场景挑战与前景自然语言处理技术当前面临的挑战未来的发展趋势和前景 伦理和社会影响实践经验后记 每日一句正能量 一个人若想拥有聪明才智,便需要不断地学习积累。 前言 自然语言处理(NLP)是一项正…

三角函数与反三角函数公式

三角函数基本关系 对角线乘积为1 顶点等于相邻两个顶点乘积 阴影三角形上两顶点的平方和等于下顶点的平方 常用于:极限(少)、不定积分(多) 诱导公式 常见 二倍角公式 作用:统一角度 半角公式(降幂公式) 和差公式 积化和差公式 和差化积公式 万能公式(救命…

PHP入门指南:起步篇

PHP入门指南:起步篇 PHP入门指南:起步篇什么是PHP?PHP 的优点PHP 开发环境搭建选择本地服务器软件包安装PHP环境配置Web服务器和PHP测试PHP安装 第一个PHP脚本PHP基础语法标记注释变量数据类型常量条件语句循环函数 PHP入门指南:起…

【Docker篇】Linux安装Docker、docker安装mysql、redis、rabbitmq

1.Linux安装docker 官方帮助文档:Install Docker Engine on CentOS | Docker Docs 1.1安装命令 # 1. 卸载之前的dockersudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate…

使用maven对springboot项目进行瘦身分离jar的多种处理方案

文章目录 前言一、方案一(修改自带的spring-boot-maven-plugin插件)二、方案二(使用spring-boot-thin-maven-plugin插件)总结 前言 springboot项目打包一般我们都使用它自带的spring-boot-maven-plugin插件,这个插件默…

Feature refinement 的阅读笔记

Pattern Recognition上一篇微表情识别的文章,记录一下其中的关键信息点。 摘要: This paper proposes a novel Feature Refinement(FR) with expression-specific feature learning and fusion for micro-expression recognition. 本文的贡献是&#x…

RCS系统之:地图编辑

一般每个供应商都有不同的需求,不同的需求都会是在不同的场景下产生的。而不同的场景都会需要构建不同的地图数据。 所有一个动态编辑的地图的能力都软件,是非常有必要的。基于这个想法,我们提供了一个可以实时,动态编辑地图的界面…

十大排序算法之堆排序

堆排序 在简单选择排序文章中,简单选择排序这个“铁憨憨”只顾着自己做比较,并没有将对比较结果进行保存,因此只能一遍遍地重复相同的比较操作,降低了效率。针对这样的操作,Robertw.Floyd 在1964年提出了简单选择排序…

【深度测试】看到技术方案后,该怎么进行分析和测试

测试左移的思想,讲究尽早测试,测试是一系列的行为,并不一定要等代码运行起来才能测,下面会分享一些经验,提供大家参考。 一、静态分析 1.1 分析方法调用链 目标:梳理结构,化繁为简 原理&#…