Flink--- 批处理 / 流处理

article/2025/9/14 11:55:56

目录

Flink的主要特点

Flink 和 Spark Streaming

搭建maven工程 FlinkTutorial

添加Scala框架 和 Scala文件夹


Flink 是一个框架和分布式的处理引擎,用于对无界和有界数据流进行状态计算。

传统数据处理架构

事务处理

分析处理

:将数据从业务数据库复制到数仓,再进行分析和查询

 流处理的演变

lambda架构

:用两套系统,同时保证低延迟和结果准确

流处理的演变

Flink的主要特点

1、事件驱动

2、基于流的世界观

在Flink的世界观中,一切都是由流组成的,离线数据是有界的流;实时数据是一个没有界限的流 :这就是所谓的有节流和无界流

3、分层API

越顶层越抽象,表达含义越简明,使用越方便

越底层越具体,表达能力越丰富,使用越灵活

Flink的其他特点

1、支持事件时间(event-time)和处理时间(processing-time)语义

2、精确一次(exactly-once) 的状态一致性保证

3、低延迟,每秒处理数百万个事件,毫秒级延迟

4、与众多常用存储系统的连接

5、高可用,动态扩展,实现7*24小时全天候运行

Flink 和 Spark Streaming

流(stream)和微批(micro-batching)

 数据模型:

--- spark采用RDD模型,spark streaming 是 DStream实际上也就是一组组小批数据RDD的集合

--- flink基本数据模型是数据流,以及事件(Event)序列

运行时架构:

--- spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个 

--- flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理

搭建maven工程 FlinkTutorial

文件---新建---项目---maven

在pom文件中插入

如下内容:

<dependencies><dependency><groupId>org.apache.flink</groupId><artifactId>flink-scala_2.12</artifactId><version>1.10.1</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-scala --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-scala_2.12</artifactId><version>1.10.1</version></dependency></dependencies><build><plugins><!-- 该插件用于将 Scala 代码编译成 class 文件 --><plugin><groupId>net.alchim31.maven</groupId><artifactId>scala-maven-plugin</artifactId><version>3.4.6</version><executions><execution><!-- 声明绑定到 maven 的 compile 阶段 --><goals><goal>compile</goal></goals></execution></executions></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>3.0.0</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration><executions><execution><id>make-assembly</id>

添加Scala框架 和 Scala文件夹

在src-main目录下创建一个新目录,命名为:Scala

 

(在新建目录上)单击右键---将目录标记为----源 根

然后,创建一个Scala类--object--命名;即可 

 

首先创建一个  . txt 文件

在resources目录下创建,命名为:hello

在新建文件夹中输入一些英语单词,一会进行批处理即可!

 运行代码

package com.atguigu.wcimport org.apache.flink.api.scala.ExecutionEnvironment
import org.apache.flink.api.scala._object WordCount {def main(args: Array[String]): Unit = {//创建一个批处理的执行环境val env:ExecutionEnvironment = ExecutionEnvironment.getExecutionEnvironment//接收文件val inputPath:String = "D:\\HYF\\FlinkTutorial\\src\\main\\resources\\hello.txt"val inputDataSet:DataSet[String]  =  env.readTextFile(inputPath)//对数据进行转换处理统计,先分词,再按照word进行分组,最后进行聚合统计val resultDataSet:DataSet[(String,Int)] = inputDataSet.flatMap(_.split(" "))    //按照空格对String进行一个分割.map((_,1))            // _进行分组,1进行求和.groupBy(0)   //以第一个元素作为key,进行分组.sum(1)     //对所有数据的第二个元素求和resultDataSet.print()}
}

运行结果

运行代码如下

package com.atguigu.wcimport org.apache.flink.streaming.api.scala.StreamExecutionEnvironment
import org.apache.flink.streaming.api.scala._object StreamWordCount {def main(args: Array[String]): Unit = {val env = StreamExecutionEnvironment.getExecutionEnvironmentval inputDataStream:DataStream[String] = env.socketTextStream("localhost",7777)val resultDataStream:DataStream[(String,Int)] = inputDataStream.flatMap(_.split(" ")).filter(_.nonEmpty).map((_,1)).keyBy(0).sum(1)resultDataStream.print()//启动任务执行env.execute("stream word count")}
}

测试——在 linux 系统中用 netcat 命令进行发送测试

启动命令 ---- nc -lk 7777 

输入一些数据即可!

运行结果:当时监听窗口出现错误了,所以没有监听成功,结果这里就不显示了


http://chatgpt.dhexx.cn/article/vvdEd76T.shtml

相关文章

流数据处理利器

流处理 (Stream processing) 是一种计算机编程范式&#xff0c;其允许给定一个数据序列 (流处理数据源)&#xff0c;一系列数据操作 (函数) 被应用到流中的每个元素。同时流处理工具可以显著提高程序员的开发效率&#xff0c;允许他们编写有效、干净和简洁的代码。 流数据处理在…

流处理(Stream)和批处理(Batch)

1 流处理和批处理的概念 在程序计算当中&#xff0c;同一节点或者不同节点之间的数据的传递是实时传递还是延迟传递&#xff0c;这就引出了两个概念。其实在非大数据领域这两个概念所起的作用也是很有限&#xff0c;但是在大数据领域&#xff0c;处理上亿级别的时候&#xff0…

管道模式 流处理

&#xff08;一&#xff09;介绍 管道这个名字源于自来水厂的原水处理过程。原水要经过管道&#xff0c;一层层地过滤、沉淀、去杂质、消毒&#xff0c;到管道另一端形成纯净水。我们不应该把所有原水的过滤都放在一个管道中去提纯&#xff0c;而应该把处理过程进行划分&#…

Flink流处理API大合集:掌握所有flink流处理技术,看这一篇就够了

大家好&#xff0c;我是百思不得小赵。 创作时间&#xff1a;2022 年 5 月 18 日 博客主页&#xff1a; &#x1f50d;点此进入博客主页 —— 新时代的农民工 &#x1f64a; —— 换一种思维逻辑去看待这个世界 &#x1f440; 今天是加入CSDN的第1172天。觉得有帮助麻烦&#x…

Python流处理

转自 &#xff1a;https://www.toutiao.com/a6589000256896107015/?tt_frommobile_qq&utm_campaignclient_share&timestamp1534156143&appnews_article&utm_sourcemobile_qq&iid40708017633&utm_mediumtoutiao_ios&group_id6589000256896107015 F…

Stream流式处理

Stream流的三类方法 获取Stream&#xff1a;流创建一条流水线,并把数据放到流水线上准备。 中间方法&#xff1a;流水线上的操作一次操作完毕之后,还可以继续进行其他操作。 终结方法&#xff1a;一个Stream流只能有一个终结方法是流水线上的最后一个操作。 生成Stream流的…

流数据处理与分析

环境 名称 版本 系统 Ubuntu 18.04.4 LTS 内存 7.5GiB 处理器 Intel Core i7-8565U CPU 1.80GHz *8 图形 Intel UHD Graphics&#xff08;Whiskey Lake 3*8 GT2&#xff09; GNOME 3.28.2 操作系统类型 64位 磁盘 251.0 GB Storm 2.1.0 Zookeeper…

流处理系统

文章目录 引言如何发送事件流流处理不可靠的时钟容错总结 引言 清楚数据的类型有助于我们设计一个性能更高&#xff0c;更有针对性的数据系统&#xff0c;比如在线系统&#xff0c;离线系统&#xff08;批处理&#xff09;。近实时系统(流处理)等等。比如说批处理系统&#xf…

流处理简介

一. 流式处理简介 在我接触到java8流式处理的时候&#xff0c;我的第一感觉是流式处理让集合操作变得简洁了许多&#xff0c;通常我们需要多行代码才能完成的操作&#xff0c;借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数&#xff0c;…

【节点流和处理流】

节点流和处理流 基本介绍 节点流可以从特定数据源读取数据&#xff0c;如FileReader、FileWriter处理流&#xff1a;是对一个已存在的流的连接和封装&#xff0c;通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一…

流数据处理

流数据处理strom 在2011年Storm开源之前&#xff0c;由于Hadoop的火红&#xff0c;整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐&#xff0c;海量数据处理的能力使得人们可以方便地处理海量数据。但是&#xff0c;Hadoop的缺点也和它的优点同样鲜明——延迟大&#xff0…

一. 流式处理简介

https://www.cnblogs.com/shenlanzhizun/p/6027042.html Java技术学习 https://www.itkc8.com 一. 流式处理简介 在我接触到java8流式处理的时候&#xff0c;我的第一感觉是流式处理让集合操作变得简洁了许多&#xff0c;通常我们需要多行代码才能完成的操作&#xff0c;借助…

Kafka基础-流处理

1. 什么是流处理&#xff1f; 首先&#xff0c;让我们说一下什么是数据流&#xff08;也称为事件流&#xff09;&#xff1f;它是无边界数据集的抽象说法&#xff0c;无边界意味着无限且不断增长&#xff0c;因为随着时间的推移&#xff0c;新数据会不断地到来。 除了无边界的…

流处理基本介绍

1. 什么是流处理 一种被设计来处理无穷数据集的数据处理系统引擎 2. 流处理的几个概念 1. 无穷数据&#xff08;Unbounded data&#xff09;&#xff1a;一种持续生成&#xff0c;本质上是无穷尽的数据集。它经常会被称为“流数据”。然而&#xff0c;用流和批次来定义…

Spark Streaming与流处理

一、流处理 1.1 静态数据处理 在流处理之前&#xff0c;数据通常存储在数据库&#xff0c;文件系统或其他形式的存储系统中。应用程序根据需要查询数据或计算数据。这就是传统的静态数据处理架构。Hadoop 采用 HDFS 进行数据存储&#xff0c;采用 MapReduce 进行数据查询或分…

什么是流处理

流处理正变得像数据处理一样流行。流处理已经超出了其原来的实时数据处理的范畴&#xff0c;它正在成为一种提供数据处理&#xff08;包括批处理&#xff09;&#xff0c;实时应用乃至分布式事务的新方法的技术。 1、什么是流处理&#xff1f; 流处理是不断合并新数据以计算结果…

嵌入式软件升级方法

一、U盘升级 1.在u盘根目录新建文件夹&#xff0c;命名为‘upgrade’ 2.将软件复制到upgrade文件夹中 3.将u盘插到嵌入式服务器usb口上&#xff0c;断电重启服务器 二、PC工具升级 1.打开PC工具&#xff0c;选中要升级的机器&#xff0c;点击‘素材管理’选项卡&#xff0c…

嵌入式软件架构设计之分层设计

关注、星标公众号&#xff0c;不错过精彩内容 整理&#xff1a;黄工 素材来源&#xff1a;网络 参考来源&#xff1a; https://blog.51cto.com/kenotu/1614390 在正规的项目开发中&#xff0c;项目往往是并行开发的&#xff0c;也就是说硬件设计、底层软件设计、应用软件设计等…

嵌入式系统软件层次结构

文章目录 嵌入式系统软件嵌入式系统软件的层次结构硬件抽象层 嵌入式操作系统嵌入式操作系统——WinCE嵌入式操作系统——VxWorks嵌入式操作系统——Linux嵌入式Linux OS的特点 嵌入式操作系统——uCOS嵌入式操作系统—— PalmOS其他嵌入式操作系统华为鸿蒙系统 嵌入式系统软件…

嵌入式软件开发必备知识体系

嵌入式软件开发学习路线 前言 本章节主要介绍嵌入式软件开发概念以及大致的学习知识点的范围 一、嵌入式软件是什么&#xff1f; 百度百科&#xff1a;嵌入式工程师是指具有C/C语言、汇编语言等基础&#xff0c;熟悉模拟电子技术等硬件知识&#xff0c;了解处理器体系结构&a…