Spark Streaming 概述及入门案例

ops/2024/10/15 22:13:28/

一、介绍

1. 不同的数据处理

  • 从数据处理的方式:
    • 流式数据处理(Streaming)
    • 批量数据处理(Batch)
  • 从数据处理的延迟:
    • 实时数据处理(毫秒级别)
    • 离线数据处理(小时或天级别)

2. 简介

  • SparkStreaming 是一个准实时(秒或分钟级别)、微批量的数据处理框架
  • SparkStreaming 支持的很多数据输入源,如: Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等。数据输入后可以用 Spark 的高度抽象原语,如: map、 reduce、 join、 window 等进行运算。结果能保存在很多地方,如 HDFS,数据库等
  • SparkStreaming 使用离散化流 (discretized stream) 作为抽象表示,称为 DStream,它是对 RDD 在实时数据处理场景的一种封装

3. 特点

  • 易用
  • 容错
  • 易整合到 Spark 体系

二、基本架构

在这里插入图片描述

1. 背压机制

  • Spark 1.5 以前版本:通过设置静态配制参数 spark.streaming.receiver.maxRate 来限制 Receiver 的数据接收速率,来解决生产和消费速率不对等造成的内存溢出等问题,但当数据生产和数据消费的能力都高于 maxRate 时会造成资源利用率下降等问题
  • Spark 1.5 版本及以后版本:为了动态控制数据接收速率来适配集群数据处理能力,引入了背压机制 (Spark Streaming Backpressure),即根据 JobScheduler 反馈作业的执行信息来动态调整 Receiver 数据接收率
  • 通过属性 spark.streaming.backpressure.enabled 来配置启用 backpressure 机制,默认值为 false,即不启用

三、入门 WordCount 案例

需求:使用 netcat 工具向 9999 端口不断的发送数据,通过 SparkStreaming 读取端口数据并统计不同单词出现的次数

1. 引入依赖

<dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.0.0</version>
</dependency>

2. 代码实现

object SparkStreamingWC {def main(args: Array[String]): Unit = {// 1.创建 SparkStreaming 环境对象val conf = new SparkConf().setMaster("local[*]").setAppName("SparkStreaming")/*创建 StreamingContext 对象需要传递两个参数1.SparkConf:配置对象2.Duration:批处理的周期,即数据采集周期,单位为毫秒,内置有 Seconds/Minute 等对象 */val ssc = new StreamingContext(conf, Seconds(3))// 2.逻辑处理val line: ReceiverInputDStream[String] = ssc.socketTextStream("localhost", 9999)val words = line.flatMap(_.split(" "))val wordAsOne = words.map((_, 1))val wordCount: DStream[(String, Int)] = wordAsOne.reduceByKey(_ + _)wordCount.print()// 3.运行采集器并等待关闭/*采集器是一个长期运行的任务,所以不能关闭 ssc,也不能让 main 方法执行完毕*/ssc.start()ssc.awaitTermination()}
}

3. 测试

  • 打开 cmd 命令窗口,执行 nc -lp 9999 命令(Linux 下为 nc -lk 999)
  • 运行程序 main 方法
  • 在窗口中输入测试字符串(以空格分隔),观察程序命令行输出结果

http://www.ppmy.cn/ops/47855.html

相关文章

JVM 虚拟机

JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java 虚拟机&#xff0c;虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机有&#xff1a;JVM、VMwave、Virtual Box等。JVM 是一台被定制过的现实当中不存在的计算…

酒茶元宇宙 - 探索味觉与科技的融合奇迹

在追求创新和完美体验的新时代&#xff0c;酒茶文化也迎来了前所未有的变革——"酒茶元宇宙"。这一概念不仅重新定义了我们对于酒茶享受的理解&#xff0c;更为酒茶爱好者及业界人士提供了一个独特的交流平台。让我们一起探索这个将传统饮品与现代科技完美融合的全新…

python tqdm怎么安装

tqdm是一个显示循环的进度条的库。taqadum, تقدّم&#xff09;在阿拉伯语中的意思是进展。tqdm可以在长循环中添加一个进度提示信息&#xff0c;用户只需要封装任意的迭代器 tqdm(iterator)&#xff0c;是一个快速、扩展性强的进度条工具库。 tqdm库的安装 在CMD窗口下输…

区块链简要介绍及运用的技术

一、区块链的由来 区块链概念最早是从比特币衍生出来的。 比特币&#xff08;Bitcoin&#xff09;诞生于2008年&#xff0c;是由一个名叫中本聪&#xff08;Satoshi Nakamoto&#xff09;的人首次提出&#xff0c;这个人非常神秘&#xff0c;至今没有他的任何准确信息。在提出…

2024河南高考作文ChatGPT

阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写一篇文章。 要…

Windows系统电脑本地部署AI音乐创作工具并实现无公网IP远程使用

文章目录 前言1. 本地部署2. 使用方法介绍3. 内网穿透工具下载安装4. 配置公网地址5. 配置固定公网地址 前言 本文主要介绍如何在Windows系统电脑上快速本地部署一个文字生成音乐的AI创作工具MusicGPT&#xff0c;并结合cpolar内网穿透工具实现随时随地远程访问使用。 MusicG…

Spring Cloud Gateway中的GlobalFilter:构建强大的API网关过滤器

在微服务架构中&#xff0c;API网关扮演着至关重要的角色&#xff0c;负责路由、过滤、以及对进入微服务集群的请求进行预处理。Spring Cloud Gateway作为Spring Cloud生态中的一款高性能API网关&#xff0c;提供了丰富的功能来满足这些需求。其中&#xff0c;GlobalFilter是一…

链表的回文结构OJ

链表的回文结构_牛客题霸_牛客网对于一个链表&#xff0c;请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法&#xff0c;判断其是否为。题目来自【牛客题霸】https://www.nowcoder.com/practice/d281619e4b3e4a60a2cc66ea32855bfa?tpId49&&tqId29370&rp1&a…