自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

永远好奇,无限进步!

详细的记录各种技术的实践过程 包含但不限 Java/Go/Python/JavaScript 等等,从语言到各种框架,飞轮效应坚信不疑者!保持热情,无限进步!

  • 博客(260)
  • 收藏
  • 关注

原创 【2023年度总结】 何其有幸 年岁并进 一元复始 万象更新

多个日夜,深夜清晨,我都在想到底自己适合不适合在这里。当你在技术团队中,每天听到大家谈论的都是房子车子、一地鸡毛时,我常常发呆,我到底想要的是什么?无数新东西,两天一个新工具,三天一个新技术,能让我都感觉到学不动了。随着学会的东西陡增,信息爆炸,也看到了自己无知的一面。早起、拍照、运动、读书、学习、认识了很多厉害的朋友,尝试影响周围的人。最后我想说,人生如棋,无限重复只找到局部最优,不断的寻求变数,下一个也许就是全局最优解。☀️ 何其有幸,年岁并进,长安常安。祝我,祝你,也祝大家。

2024-01-01 10:28:52 6460 2

原创 大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL

Yandex官方给出的介绍是CollapsingMergeTree会异步的删除(折叠)除了特定列的 Sign 有 1 和 -1 的值以外,其余所有字段的值都相等的成对的行。没有成对的行会被保留,该引擎可以显著的降低存储量并提高SELECT查询效率。CollapsingMergeTree引擎有个状态列Sign,这个值为1为“状态”行,-1为“取消”行,对于数据只关心状态列为状态的数据,不关心状态列为取消的数据。

2024-09-19 11:26:21

原创 大数据-139 - ClickHouse 集群 表引擎详解4 - MergeTree 实测案例 ReplacingMergeTree SummingMergeTree

这个引擎是在MergeTree的基础上,添加了处理重复数据的功能,该引擎和MergeTree的不同之处在于它会删除具有相同主键的重复项。该引擎来自MergeTree,区别在于,当合并SummingMergeTree表的数据片段时,ClickHouse会把所有具有相同聚合数据的条件KEY的行合并为一行,该行包含了被合并的行中具有数值数据类型的列的汇总值。如果聚合数据的条件KEY的组合方式使得单个键值对应于大量的行,则可以显著减少存储空间并加快数据查询的速度。对于不可加的列,会取一个最先出现的值。

2024-09-19 10:48:40 295

原创 大数据-138 - ClickHouse 集群 表引擎详解3 - MergeTree 存储结构 数据标记 分区 索引 标记 压缩协同

不同的分区的数据会被划分成不同的片段,ClickHouse在后台合并数据片段以便高效的存储,不会合并来自不同分区的数据片段,这个合并机制并不保证相同的主键的所有行都会合并到同一个数据片段中。TTL:time to live 数据存活时间,TTL既可以设置在表上,也可以设置在列上,TTL指定的时间到期后删除相应的表或者列,如果同时设置了TTL,则根据先过期时间删除相应数据。数据标记和区间是对齐的,均按照 index_grangularity粒度间隔,可以通过索引区间的下标编号找到对应的数据标记。

2024-09-18 09:24:51 1227

原创 大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引

ClickHouse的稀疏索引与Kafka的稀疏索引不同,可以由用户自由组合多列,因此也要格外注意不要加入太多索引列,防止索引数据过于稀疏,增大存储和查找成本。MergeTree 的分区目录在数据写入过程中被创建,不同的批次写入数据属于同一分区,也会生成不同的目录,在之后某个时刻再合并(写入后10-15分钟),合并后的旧分区目录默认8分钟后删除。这样,每一列都通过ORDER BY列进行了索引,查询时,先查找到数据所在的parts,再通过mrk2文件确定bin文件中数据的范围即可。

2024-09-18 09:11:27 1160

原创 大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge

MergeTree 系列、Log 系列。ClickHouse 是一个列式数据库管理系统,支持多种表引擎,每种表引擎都有其特定的功能和用途。数据的存储方式和位置,写到哪里以及从哪里读取数据支持哪些查询以及如何支持并发数据访问索引的使用(如果存在)是否可以执行多线程请求数据复制参数ClickHouse 是一个列式数据库管理系统,支持多种表引擎,每种表引擎都有其特定的功能和用途。

2024-09-14 09:43:04 2249

原创 大数据-135 - ClickHouse 集群 - 数据类型 实际测试

ClickHouse 是一款高性能的列式数据库管理系统,广泛应用于大数据分析和实时查询。了解 ClickHouse 的数据类型有助于更有效地存储和查询数据。本文将详细介绍 ClickHouse 支持的各种数据类型。Int8, Int16, Int32, Int64, Int128, Int256:有符号整数,分别占用 8、16、32、64、128 和 256 位。UInt8, UInt16, UInt32, UInt64, UInt128, UInt256:无符号整数,适用于非负整数。Float32:32

2024-09-14 09:21:30 2127

原创 大数据-134 - ClickHouse 集群三节点 安装配置启动

随着大数据时代的到来,企业对高效数据处理和实时分析的需求日益增长。ClickHouse,一款开源的高性能列式数据库,因其卓越的查询速度和可扩展性,正成为数据分析领域的明星产品。比如Hadoop集群、Kafka集群、Redis集群等。我们需要停止之前的服务,来空出一定的内存和端口给 ClickHouse 使用。我们需要编辑一下 system 的文件,来实现优化的启停。我们需要三台云服务器都修改config.xml。(如果你的内存比较富裕可以忽略)等待安装 ClickHouse。启动ClickServer。

2024-09-13 09:46:35 2929

原创 大数据-133 - ClickHouse 基础概述 全面了解

ClickHouse 是一个快速开源的OLAP数据库管理系统,它是面向列的,允许使用SQL查询实时生成分析报告。随着物联网IOT时代的来临,IOT设备感知和报警存储数据越来越大,有用的价值数据需要数据分析师去分析。大数据分析成了非常重要的环节,开源也为大数据分析工程师提供了十分丰富的工具,但这也增加了开发者选择适合的工具的难度,尤其是新入行的开发者来说。

2024-09-13 09:33:35 2984 1

原创 大数据-132 - Flink SQL 基本介绍 与 HelloWorld案例

Flink SQL 是 Apache Flink 提供的一种高层次的查询语言接口,它基于 SQL 标准,为开发者提供了处理流式数据和批处理数据的能力。Flink SQL 允许用户使用标准 SQL 查询语言在数据流和数据表上执行复杂的操作,适用于多种应用场景,如实时分析、数据流处理、机器学习等。Flink SQL 的一大特点是流处理和批处理的统一性。通过同一套 SQL 语法,用户可以同时处理静态数据(批处理)和动态数据(流处理)。这使得应用程序的开发更加简化,因为可以用相同的逻辑编写实时流数据处理和历史数据的

2024-09-12 09:34:32 2597

原创 大数据-131 - Flink CEP 案例:检测交易活跃用户、超时未交付

通过Flink CEP,开发者可以从流数据中识别出特定的事件模式。将模式应用到流中:将定义好的模式应用到事件流上,生成模式流PatternStream。定义事件模式:使用Flink CEP的API定义事件模式,例如连续事件、迟到事件等。提取匹配事件:使用select函数提取匹配模式的事件,并定义如何处理这些事件。Flink CEP的核心是通过定义事件模式,从流中检测复杂事件序列。定义事件流:创建一个DataStream,表示原始的事件流。业务上需要找出24小时内,至少5次有效交易的用户。

2024-09-12 09:02:37 1677

原创 大数据-130 - Flink CEP 详解 - CEP开发流程 与 案例实践:恶意登录检测实现

所以,二进制输入完毕,如果满足最终状态,也就是最后停在S1状态,那么输入的二进制数就含有偶数个0。对超时的部分模式序列应用超时函数,对于每个部分模式序列,调用提供的 PatternTimeoutFunction,模式超时函数只能产生一个结果元素。对检测到的序列模式序列应用选择函数,对于每个模式序列,调用提供的 PatternSelectFunction,模式选择函数只能产生一个结果元素。从图上可以看出,输入只有1和0两种。所以有限状态机的工作过程,就是从开始状态,根据不同的输入,自动进行转换的过程。

2024-09-11 09:59:38 2608

原创 大数据-129 - Flink CEP 详解 Complex Event Processing - 复杂事件处理

Flink CEP(Complex Event Processing)是Apache Flink的一个组件,用于处理复杂事件流。它允许用户基于流数据定义模式,并检测符合这些模式的事件序列。Flink CEP适用于实时流数据处理中的模式匹配任务,如欺诈检测、设备监控、网络入侵检测等。

2024-09-11 09:51:37 2657

原创 大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot

一个Flink程序由多个Operator组成(Source、Transformation、Sink)。一个Operator由多个并行的Task(线程)来执行,一个Operator的并行Task(线程)数目就被称为该Operator(任务)并行度(Paralle)并行度可以有如下几种指定方式。Flink 中的并行度(Parallelism)是指每个算子(Operator)在任务执行时可以同时处理数据的并发实例数。Flink 的核心优势之一就是能够通过并行处理大规模数据来提高效率和性能。

2024-09-10 09:31:24 2780

原创 大数据-127 - Flink State 04篇 状态原理和原理剖析:状态存储 Part2

在Flink的实际实现中,对于同一种StateBackend,不同的State在运行时会有细分的StateBackend托管,例如:MemoryStateBackend,就有DefaultOperatorStateBackend管理OperatorState,HeapKeyedStateBackend管理KeyedState。JOB_ID是应用的唯一ID,CHECK_POINT_ID 是每次 CheckPoint时自增的数字ID,我们可以从备份的CheckPoint数据恢复当时的作业状态。

2024-09-10 09:20:22 2711

原创 大数据-126 - Flink State 03篇 状态原理和原理剖析:状态存储 Part1

其中maxParallelism是Flink程序的最大并行度,这个值一般我们不会去手动设置,使用默认的值(128)就好,这里注意下,maxParallelism和我们运行程序时指定的算子并行度(parallelism)不同,parallelism不能大于maxParallelism,最多两者相等。FsStateBackend将工作状态数据保存在TaskManager的Java内存中,进行快照时,再将快照数据写入上面的配置的路径,然后将写入的文件路径告知JobManager。

2024-09-09 10:23:47 4802

原创 大数据-125 - Flink State 02篇 状态原理和原理剖析:广播状态

在处理前三个动作之后,下一个事件(用户1001的注销动作)被运送到处理用户1001的事件的任务,当任务接收到动作时,它从广播状态中查找到当前模式并且用户1001的先前操作。在上图的右侧,该图显示了操作员的三个并行任务,即摄取模式和用户操作流,评估操作流上的模式,并在下游接收到新模式时,替换为当前活动模式。我们示例应用程序摄取两个数据流,第一个流在网站上提供用户操作,并在上图的左上方展示,用户交互事件包括操作的类型(用户登录、用户注销、添加购物车或者完成付款)和用户的ID,其由颜色编码。

2024-09-09 10:11:15 4472

原创 大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析

同时在Flink中KeyedState和OperatorState均具有两种形式,其中一种为托管状态(Managed State)形式,由FlinkRuntime中控制和管理状态数据,并将状态数据转换为内存HashTables或RocksDB的对象存储,然后将这些状态数据通过内部的接口持久话到CheckPoints中,任务异常时可以通过这些状态数据恢复任务。在对应的StateBackend中,会去调用对应的create方法获取到stateDescriptor中的值。

2024-09-07 09:29:54 6766 6

原创 大数据-123 - Flink 并行度 相关概念 全局、作业、算子、Slot并行度 Flink并行度设置与测试

一个Flink程序由多个Operator组成(Source、Transformation、Sink)。一个Operator由多个并行的Task(线程)来执行,一个Operator的并行Task(线程)数目就被称为该Operator(任务)并行度(Paralle)并行度可以有如下几种指定方式。Flink 中的并行度(Parallelism)是指每个算子(Operator)在任务执行时可以同时处理数据的并发实例数。Flink 的核心优势之一就是能够通过并行处理大规模数据来提高效率和性能。

2024-09-07 09:13:49 2674

原创 大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window

在使用基于事件时间的窗口时,Flink 依赖 Watermark 来决定何时触发窗口计算。例如,如果你有一个每 10 秒的滚动窗口,当 Watermark 达到某个窗口的结束时间后,Flink 才会触发该窗口的计算。尽管 Watermark 能有效解决乱序问题,但总有可能会出现事件在生成 Watermark 之后才到达的情况(即“迟到事件”)。假设有一个 10 秒的窗口,并且 Watermark 达到 12:00:10,此时 Flink 会触发 12:00:00 - 12:00:10 的窗口计算。

2024-09-06 09:35:46 4921 7

原创 大数据-121 - Flink Time Watermark 详解 附带示例详解

Watermark 是一个特殊的标志,它用于告诉 Flink 数据流中事件的进展情况。简单来说,Watermark 是 Flink 中估计的“当前时间”,表示所有早于该时间戳的事件都已经到达。Flink 认为当前时间在 Watermark 时间戳之前的所有事件已经接收完毕,不再期待有早于该时间戳的事件。当 Watermark 时间戳更新时,系统可以触发基于事件时间的窗口操作,比如窗口计算、聚合等。

2024-09-06 09:30:25 3308 1

原创 大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动&基于事件驱动

滑动窗口是固定窗口更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成。Flink 的滑动时间窗口(Sliding Window)是一种常用的窗口机制,适用于处理流式数据时需要在时间范围内定期计算的场景。滑动窗口会按照指定的窗口大小(window size)和滑动步长(slide interval)不断地划分数据,并对每个窗口内的数据进行聚合计算。窗口长度固定,可以有重叠。场景:我们可以每30秒计算一次最近一分钟用户购买的商品数基于事件驱动会话窗口由一系列事件组合一个指

2024-09-05 09:02:10 2905

原创 大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动&基于事件驱动

Flink 的滚动时间窗口(Tumbling Window)是一种常见的基于时间的窗口机制,可以通过事件驱动进行计算。通俗讲,Window是用来对一个无限的流的设置一个有限的集合,从而有界数据集上进行操作的一种机制,流上的集合由Window来划定范围,比如“计算过去10分钟”或者“最后50个元素的和”。场景:我们需要统计每一分钟用户购买商品的总数,需要将用户的行为事件按每一分钟进行切分,这种切分被叫做 翻滚时间窗口(Tumbling Time Window)。

2024-09-05 08:49:09 4121 1

原创 大数据-118 - Flink DataSet 基本介绍 核心特性 创建、转换、输出等

上节研究了Flink的Sink的案例:SinkJDBC,SinkKafka,并且附带了代码的实现案例,本节继续研究FlinkDataSet,包含基本介绍、特性等。Flink 的官方路线图中已经不再优先开发 DataSet API 的新特性,未来的主要开发将集中在 DataStream API,甚至批处理功能都将通过 DataStream API 来实现。可以通过自定义的输入格式(如 JDBC 输入格式)从数据库中读取数据,虽然 Flink 本身并没有内置 JDBC 源的批处理 API,但可以通过自定义实现。

2024-09-04 10:53:47 3650 1

原创 大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka

上节研究了Flink Sink的基本概念、配置和使用,同时研究了一个案例。本节我们研究FlinkSink写出数据到MySQL、写出到Kafka的数据。Flink 提供了 JdbcSink,它是基于 JDBC 协议的 Sink,可以将数据写入各种关系型数据库,包括 MySQL。在使用 JDBC Sink 时,需要提供数据库连接信息和 SQL 语句,通过这些信息,Flink 将数据流中的记录插入或更新到 MySQL 表中。

2024-09-04 10:25:50 3704

原创 大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis

上节研究了FlinkDataStream Transformation,涉及到了多个函数,FlatMap、WIndow、Reduce等等内容。本节研究Sink原理、概念、常见Sink类型等等,且附带了一个案例。除了使用内置的 Sink,Flink 还允许开发者实现自定义 Sink。通过实现 SinkFunction 接口或扩展 RichSinkFunction 类,开发者可以定义自己所需的 Sink。自定义 Sink 通常用于需要特殊处理或集成尚不支持的外部系统。

2024-09-03 09:23:52 3793 1

原创 大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce

上一节研究了FlinkDataStreamAPI的Rich并行源,并且代码实现了。本节研究FlinkDataStream的Transformation,附带多个函数与代码可测试运行。对于一个输入数据流 [1, 2, 3, 4, 5],部分和的输出将是 [1, 3, 6, 10, 15]。聚合窗口中的内容,min 和 minBy 的区别于,min 返回最小值,而 minBy 返回在此字段中具有最小值的元素(max 和 maxBy 同理)可以在已经分区的KeyedStream上定义窗口,窗口根据某些特性。

2024-09-03 09:07:47 2398

原创 大数据-114 Flink DataStreamAPI 程序输入源 自定义输入源 Rich并行源 RichParallelSourceFunction

上节我们完成了FlinkDataStreamAPI的非并行源和并行源的介绍与开发,本节研究Flink的Rich并行源,Rich并行源会有更强大的能力。在 Apache Flink 中,RichSourceFunction 是一种增强的源函数(Source Function),它允许开发者在定义源操作时,能够访问 Flink 的生命周期方法、状态管理、配置访问等更多功能。

2024-09-02 09:34:23 4217 1

原创 大数据-113 Flink DataStreamAPI 程序输入源 自定义输入源 非并行源与并行源

上节研究了Flink的DataStreamAPI,文件、Socket、集合、连接器等内容。本节研究自定义的输入源,包含非并行源与并行源。在 Apache Flink 中,非并行源(Non-Parallel Source)是一种特殊的源操作(Source Operator),它的最大并行度被限制为 1。这意味着,无论 Flink 集群中有多少个 Task Manager 和 Slot,该源操作都只能在一个并行实例中运行。这通常用于处理那些不适合并行化的任务或需要集中处理的工作。

2024-09-02 09:15:02 3391

原创 大数据-112 Flink DataStreamAPI 程序输入源 DataSource 基于文件、集合、Kafka连接器

上节完成了FlinkYARN模式的启动和测试,测试了资源的分配和任务的提交。本节继续研究Flink的DataStreamAPI,研究了DataSource 基于文件、集合、Kafka连接器,附带依赖和代码。可以使用 StreamExecutionEnvironment.addSource()将一个数据源添加到程序中。Flink提供了许多预先实现的源函数,但是也可以编写自己的自定义源,方法是非并行源:implements SourceFunction。

2024-08-31 09:34:23 5634 6

原创 大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务

上节研究了Flink的Standalone的部署模式并进行了测试。本节研究Flink的YARN模式部署,集群模式申请资源、提交任务。上面的脚本会向YARN申请3个Container,即便写的是2个,因为ApplicationMaster和JobManager有一个额外的容器,一旦将Flink部署到YARN集群中,就会显示JobManger的连接详细信息。如果不想让Flink YRAN客户端始终运行,那么也可以启动分离的YARN会话,被参数被称为-d或–detached。

2024-08-31 09:26:23 3503

原创 大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖

上节研究Flink基本架构,组件之间的关系,TaskManager等,本节研究Standalone模式的部署与启动,为后续集群启动做好准备!Standalone 模式是一种相对简单的 Flink 集群部署方式,适合在拥有固定资源的环境中运行 Flink 应用程序。所有的 Flink 组件(如 JobManager 和 TaskManager)都是手动配置和启动的,没有依赖外部的资源管理系统。这里要注意,由于我们之前配置过Spark环境,Spark的Web也是8081端口。

2024-08-30 10:00:05 4640 3

原创 大数据-109 Flink 体系结构 运行架构 ResourceManager JobManager 组件关系与原理剖析

上节研究了Flink批处理,实现了单词统计Word Count,批处理和流处理。本节研究Flink的体系结构,运行架构,组件关系和原理剖析。Flink的所有操作都叫做Operator,客户端在提交任务的时候会对Operator进行优化操作,能进行合并的Operator会被合并为一个Operator,合并后的Operator成为OperatorChain,实际上就是一个执行链,每个执行链会在TaskManager上一个独立的线程中执行。

2024-08-30 09:30:27 4681 3

原创 大数据-108 Flink 快速应用案例 重回Hello WordCount!方案1批数据 方案2流数据

上一节研究了Flink的基本概念、适用场景、核心组成等内容,本节研究Flink的应用案例,重回WordCount,使用批数据和流数据的方式。流处理是指对持续不断的数据流进行实时处理。Flink 的流处理模式非常适合处理持续产生的数据,例如来自传感器、日志记录系统或金融交易的数据流。批处理是指对静态的、有界的数据集进行处理。这种处理通常用于一次性的大规模数据分析,如定期的业务报告生成、数据转换和加载任务。

2024-08-29 09:09:07 5046 5

原创 大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构

上节结束了SparkGraphX的研究,本节开始研究新的框架Flink,本节介绍Flink的基本概述,场景、特点、核心组成、生态发展、处理模型。Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算,Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算。Flink起源于2008年柏林大学的研究性项目 Stratosphere2014年该项目被捐赠给了Apache软件基金会Flink一跃成为Apache软件基金会的顶级项目之一。

2024-08-29 08:55:58 3914

原创 大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户

上节研究了SparkGraphX基本概念、基础架构等内容,本节研究Spark GraphX的案例,放了3个案例,图的基本计算、连通图算法、寻找相同的用户。图本身是递归数据结构,顶点的属性依赖于它们的邻居的属性,这些邻居的属性又依赖于自己的邻居的属性。所以需要重要的算法都是迭代的重新计算每个顶点的属性,直到满足某个确定的条件。问题:在以下数据中,找到同一个用户,合并相同用户的数据。一系列的图并发抽象被提出来用来表达这些迭代算法。GraphX公开了一个类似Pregel的操作。给定数据文件,找到存在的连通体。

2024-08-28 09:52:55 4062 3

原创 大数据-105 Spark GraphX 基本概述 与 架构基础 概念详解 核心数据结构

上节研究Spark Streaming Kafka的Offsets管理,通过Redis进行管理操作。本节研究Spark GraphX 是 Spark 一个组件,专门用来表示图以及进行图的并行计算。GraphX通过重新定义了图的抽象概念来拓展了RDD:定向多图,其属性附加到每个顶点和边。为了支持图计算,GraphX公开了一系列基本运算(比如:mapVertices、mapEdges、subgraph)以及优化后的 Pregel API 变种。此外,还包含越来越多的图算法和构建器,以简化图形分析任务。

2024-08-28 08:50:05 3562 1

原创 大数据-104 Spark Streaming Kafka Offset Scala实现Redis管理Offset并更新

上节研究了SparkStreaming Kafka的Offset管理,同时使用Scala实现了自定义的Offset管理。本节继续研究,使用Redis对Kafka的Offset进行管理。Redis 作为一个高效的内存数据库,常用于存储 Spark Streaming 中的 Kafka 偏移量。通过手动管理偏移量,你可以在每批次数据处理后,将当前批次的 Kafka 偏移量存储到 Redis 中。这样,在应用程序重新启动时,可以从 Redis 中读取最后处理的偏移量,从而从正确的位置继续消费 Kafka 数据。

2024-08-27 09:33:12 4558 10

原创 大数据-103 Spark Streaming Kafka Offset管理详解 Scala自定义Offset

上节研究了Spark Streaming 与Kafka的关系,研究了08、10版本的不同的,研究了Producer、KafkaDStream,并且附带实例代码。在 DStream 初始化的时候,需要指定每个分区的Offsets用于从指定位置读取数据读取并处理消息处理完之后存储结果数据用虚线存储和提交 Offset,敲掉用户可能会执行一系列操作来满足他们更加严格的语义要求。

2024-08-27 09:24:24 3938

原创 大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例

上节研究了Spark Streaming DStream有状态转换和对应的转换案例,本节研究Streaming Kafka,各种版本的接口,ReceiverApproach、DirectApproach,附带测试的代码案例。基于 Receiver 的方式使用 Kafka 旧版本消费者高阶 API 实现。对于所有的 Receiver,通过 Kafka 接收的数据被存储于 Spark 的 Executors 上,底层是写入 BlockManager中

2024-08-26 10:45:00 3532 5

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除