SparkStreaming---入门

news2024/9/21 4:22:05

文章目录

  • 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()

    //启动SparkStreamingContext
    ssc.start()
    //等待接收数据
    ssc.awaitTermination()
  }

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GameFramework框架】一、框架介绍

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog…

Flink 读取 Kafka 消息写入 Hudi 表无报错但没有写入任何记录的解决方法

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧二维…

node,node-sass,sass-loader之间的版本关系

前言 安装配置node-sass 以及 sass-loader想必是很多前端的噩梦–一不小心又不成功还得装个半天。 下面说一下这个问题。 当然,你肯定遇到过: Node Sass version 9.0.0 is incompatible with ^4.0.0-这样的问题,这个也是因为三者关系对不上…

【HTML 基础】表单标签

文章目录 1. <form>2. <input>3. <select> 和 <option>4. <textarea>5. <button>结语 HTML 表单是互联网上交互性最强的元素之一&#xff0c;它允许用户输入、选择和提交数据。在这篇博客中&#xff0c;我们将介绍 HTML 中一些关键的表单标…

手把手教你写架构(java)篇

领取资源在文章末尾。 架构部分&#xff1a; 1. 分层架构&#xff08;Layered Architecture&#xff09;&#xff1a;将应用程序分解为多个逻辑层&#xff0c;每个层都有明确的职责。常见的分层包括表示层&#xff08;Presentation Layer&#xff09;、业务逻辑层&#xff08…

torchvision.models._utils.IntermediateLayerGetter()使用

torchvision.models._utils.IntermediateLayerGetter&#xff08;&#xff09;使用 源码如下&#xff1a; from collections import OrderedDictimport torch from torch import nnclass IntermediateLayerGetter(nn.ModuleDict):"""Module wrapper that ret…

电脑配置在哪里看?别错过这四个方法

在使用电脑的日常操作中&#xff0c;了解电脑的硬件和软件配置是解决问题、优化性能以及购买新硬件的关键。然而&#xff0c;对于一些用户来说&#xff0c;查看电脑配置可能是一个看似复杂的任务。幸运的是&#xff0c;有多种简便而直观的方法&#xff0c;让您能够轻松获取电脑…

【python】在python中使用单元测试unittest

在python中使用单元测试unittest 大家好&#xff0c;欢迎来到我的技术乐园&#xff01;今天&#xff0c;我们将一起踏入Python单元测试的奇妙旅程&#xff0c;探索这个让我们的代码更可靠、更强壮的令人愉快的世界。 前言&#xff1a;为什么单元测试如此重要&#xff1f; 在我…

如何访问 Oracle OKE 集群

OKE是Oracle Cloud提供的托管Kubernetes服务&#xff0c;为用户提供强大而灵活的容器编排平台。在本文中&#xff0c;我们将详细介绍如何有效地与OKE集群进行交互&#xff0c;包括访问集群的不同方式、管理访问权限以及执行常见操作的步骤。 1 安装oci命令 1.1 在Oracle Linux…

智慧城市行业盛会:2024北京国际智慧城市展览会(世亚智博会)

随着科技的飞速进步和人们生活水平的不断提高&#xff0c;智慧城市建设已经逐渐成为当今社会的重要议题。为了展示和推广国内外数字技术与新应用成果&#xff0c;引领数字产业发展新方向&#xff0c;积极推动5G、人工智能、大数据、云计算、物联网、移动互联网、元宇宙等新型数…

Java编程练习之类的封装

1.把一个Student类封装起来&#xff0c;模拟一个转校生转入新学校后为其制作学生信息的过程。运行结果如下&#xff1a; package zhtestdemo; import java.util.Scanner; import java.text.DecimalFormat; public class demo { //创建类&#xff0c;类名叫demo; private Stud…

Transformer 自然语言处理(二)

原文&#xff1a;Natural Language Processing with Transformers 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第五章&#xff1a;文本生成 基于 Transformer 的语言模型最令人不安的特点之一是它们生成的文本几乎无法与人类写的文本区分开。一个著名的例子是 Ope…

二、人工智能之提示工程(Prompt Engineering)

黑8说 岁月如流水匆匆过&#xff0c;哭一哭笑一笑不用说。 黑8自那次和主任谈话后&#xff0c;对这个“妖怪”继续研究&#xff0c;开始学习OpenAI API&#xff01;关注到了提示工程(Prompt Engineering)的重要性&#xff0c;它包括明确的角色定义、自然语言理解&#xff08;…

VSCode 设置代理

Open Visual Studio Code, click the settings icon in the lower left corner, and click Settings.

pysyft框架中WebsocketClientWorker与WebsocketServerWorker的消息传输

引言 pysyft是基于pytorch的一个联邦学习框架&#xff08;虽然用起来很难受&#xff09;&#xff0c;通过内存管理实现联邦学习的模拟。 在pysyft中&#xff0c;WebsocketServerWorker充当数据的提供方&#xff08;数据存储方&#xff09;&#xff0c;而WebsocketClientWorker…

RocketMQ—RocketMQ安装

RocketMQ—RocketMQ安装 在安装RocketMQ之前需要先安装Jdk&#xff0c;并配置JAVA_HOME环境变量。 在安装之前我们要先下载RocketMQ的安装包。 下载 到RocketMQ的官网https://rocketmq.apache.org/ 选择Download。 本文使用4.9.2版本。 将下载页面拉到最后面&#xff0c;有…

推荐系统|排序_MMOE

MMOE MMOE是指Multi-gate Mixture-of-Experts 注意看Expert后面加了s&#xff0c;说明了有多个专家。 而在MMOE中专家是指用来对输入特征计算的神经网络&#xff0c;每个神经网络根据输入计算出来的向量都会有所不同。 MMOE的低层 MMOE的上一层 通过MMOE的低层算出的向量和权…

Zookeeper分布式队列实战

目录 Zookeeper分布式队列 普通方式实现 设计思路 具体实现 使用Curator实现 具体实现 注意事项 Zookeeper分布式队列 常见的消息队列有:RabbitMQ&#xff0c;RocketMQ&#xff0c;Kafka等。Zookeeper作为一个分布式的小文件管理系统&#xff0c;同样能实现简单的队列功…

使用Markdown写作的魔力

今年的年终总结报告,我是用Markdown写的,只花了大概2.5天的时间,包括统计任务数据,时效,总结成果,挖掘不足,提出改善措施和计划。 将全部文字内容的.md文档,导出为word,然后用了做PPT的AI,设计了PPT,再修改了半天,就完成了。 上周为两个代码工程,用Markdown写了r…

Kubernetes operator(五)api 和 apimachinery 篇【更新中】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第五篇&#xff0c;主要对 k8s.io/api 和 k8s.io/apimachinery 两个项目 进行学习Kubernetes operator学习系列 快捷链接 Kubernetes operator&#xff08;一&#xff09;client-g…