自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(2640)
  • 收藏
  • 关注

原创 常用开发工具官方文档及源码链接入口页

Python:文档 (中文)、文档 (英文);CPython 源码numpy:文档pandas:文档matplotlib:文档sklearn:文档;源码NetworkX:文档XgBoost:文档Pylint:文档Black:文档PyCharm:文档ElasticSearch:文档;Python APIKafka:文档 (中文);源码;Python API

2023-04-20 13:16:34 776

原创 Flink|问题处理记录:数据倾斜导致 checkpoint 失败问题处理【v2】

任务上游为 40 个 Kafka TOPIC,下游为 OTS。在 2024.03.23 04:13 的 checkpoint 突然无法在 100 分钟内完成,两次 checkpoint 均失败,第 3 次 checkpoint 已可以预支仍会失败。两次失败的 checkpoint(3739 和 3740)的详细信息如下:可以看到,在两次 checkpoint 中,subtask 20 均没有完成 checkpoint 的确认。

2024-03-24 11:46:48 813

原创 其他|算法交流笔记(1)

通过如下相对特殊的模型场景,来讨论机器学习的基本概念。场景描述如下:根据游戏道具的在各种游戏玩法(例如商城、抽卡、活动等)中的交换规则(例如:3 个 A 道具 + 2 个 B 道具 = 1 个 C 道具),预测每种游戏道具的价值。

2024-03-20 13:20:50 268

原创 Streamlit|缓存对象无法哈希的问题处理

观察报错信息堆栈,发现 streamlit 在尝试使用自己的哈希方法对对象进行哈希,并没有使用 Python 的内置方法。参数,令 streamlit 使用 Python 的内置方法。(后续仓库结构可能调整,若需参考可使用方法名在仓库中搜索)魔法方法,从而使参数对象的哈希过程可控。参数,令其使用 Python 的内置哈希函数。方法用于计算哈希和判断是否重复,此时。没有显式地支持哈希,于是添加了。为了提高代码的复用性,对于添加了。的函数,建议在其参数类中添加。装饰器中,显式地添加。装饰器中,显式地添加。

2024-03-12 08:34:29 331

原创 Java|IDEA 中涉及的 JDK 版本设置

这里支持每个项目分别配置不同的字节码版本。

2024-03-07 20:33:35 225

原创 Java|IDEA 运行和打包报错解决【v2修订版】

将 IDEA 的 Project Structure(File > Project Structure)中的 Project 和各个 Modules 的 JDK 版本统一。在部分 IDEA 或 Maven 版本,如果统一上述配置后仍未解决,需再检查系统环境变量与上述配置中的 JDK 版本是否统一。似乎是由于插件版本冲突导致的,移除以下 2 个插件即可。但实际是因为 pom 文件中如下两个插件导致的。lombok 的 1.18.26 版本兼容性问题,使用 1.18.30 版本即可。

2024-03-04 23:14:41 398 1

原创 Python|生成项目的 requirements.txt 文件

优先推荐使用方法 1,即使用pipreqs扫描项目代码生成文件。

2024-03-04 23:08:12 281

原创 Hive|pyhive 在同一个集群的多个 Hive Server 之间负载均衡

因此,我们只能在每次创建 Hive 连接时,通过在多个 Hive Server 中随机选择一个,来模拟实现 Hive Server 的负载均衡。参数类似 Kafka 集群时的逗号或其他符号分隔多个节点的写法。显然,这样的实现方法不可能支持。查看 pyhive 的。

2024-02-22 14:09:39 395

原创 Flink 源码剖析|数据流中算子的接口

在介绍数据流中算子时,我们根据继承关系介绍,从父类向子类介绍。下面,首先我们来看一下数据流中算子的相关接口。

2024-02-22 08:47:07 997

原创 Flink 源码剖析|数据流中的元素

在 Flink 的数据流中,所有元素均继承自抽象类。该抽象类有 6 个子类,即 Flink 的数据流中有且仅有这 6 种类型的元素。TWatermark。

2024-02-16 11:33:49 475

原创 Flink 源码剖析|Java 类型推断:从 Lambda 表达式中提取类型

因为这个方法是相对脆弱的,可能会因为未知的 JVM 问题导致抛出异常;所以捕获所有出现无法处理的异常,并转而抛出。该方法用于提取使用 lambda 表达式构造的可执行对象的返回值信息,如果参数。异常并补充异常信息,以提示从 lambda 方法中提取类型失败。类似,但是包含返回类型信息。由 lambda 表达式实现,则返回。下面我们逐段来分析这个静态方法。类中,定义了静态子类。类中,提供了静态方法。

2024-02-15 18:43:57 385

原创 Flink 源码剖析|5. 键控状态的 API 层

在 Flink 中有如下 5 种键控状态(Keyed State),这些状态仅能在键控数据流(Keyed Stream)的算子(operator)上使用。键控流使用键(key)对数据流中的记录进行分区,同时也会对状态进行分区。要创建键控流,只需要在 DataStream 上使用keyBy()方法指定键即可。update(T)T value()get(UK)entires()keys()values()isEmpty()add(T)add(T)add(T)所有的类型状态还有一个clear()

2024-02-15 14:57:05 968

原创 Flink 源码剖析|StateDescriptor 及其子类

在从中获取状态时,首先需要创建一个对应类型的,才能获取对应的状态句柄。上图为 5 种内置状态类型对应的的 UML 图,可以看到它们均继承了抽象类。

2024-02-15 14:50:05 674

原创 Flink 源码剖析|键控状态的 API 层

在 Flink 中有如下 5 种键控状态(Keyed State),这些状态仅能在键控数据流(Keyed Stream)的算子(operator)上使用。键控流使用键(key)对数据流中的记录进行分区,同时也会对状态进行分区。在状态句柄中,记录了状态名称、状态所持有值的类型以及用户所指定的函数。接口是所有状态接口的基类,其中只定义了一个。在使用状态时,直接使用状态句柄中的方法即可。接口是用于保存一个值的状态,其中定义了。方法,用于移除当前 key 下的状态。方法,用于清除当前键的状态数据。

2024-02-15 11:01:13 888

原创 Flink 源码剖析|4. 累加器与相关工具方法

在 Flink 官方文档中,提到单个作业的所有累加器共享一个命名空间,Flink 会合并所有具有相同名称的累加器。(合并多个累加器的结果)功能的一种数据结构,在作业结束后,可以获取所有部分(各个 operator 的各个 subtask)合并后的最终结果并发送到客户端。类型表示累加器结果的类型,这个类型必须是可序列化的。,但是要求累加的值的类型与累加器的结果的类型必须相同,适用于一些相对简单的操作,例如计数器。类型表示每一次向累加器中的累加的值的类型,这个类型不要求是可序列化的;

2024-02-15 08:35:38 907

原创 Flink 源码剖析|AccumulatorHelper

在类中,有一些用于操作累加器的静态工具方法。

2024-02-14 21:23:39 271

原创 Flink 源码剖析|累加器

(合并多个累加器的结果)功能的一种数据结构,在作业结束后,可以获取所有部分(各个 operator 的各个 subtask)合并后的最终结果并发送到客户端。类型表示累加器结果的类型,这个类型必须是可序列化的。,因此可以在不同算子(operator)的不同 UDF 中使用同一个累加器,Flink 会合并将所有具有相同名称的累加器。,但是要求累加的值的类型与累加器的结果的类型必须相同,适用于一些相对简单的操作,例如计数器。类型表示每一次向累加器中的累加的值的类型,这个类型不要求是可序列化的;

2024-02-14 18:24:14 1035

原创 Flink 源码剖析|3. UDF 接口与富函数

Flink 作业的数据流中的主要操作大部分都需要 UDF(user defined functions,用户自定义函数)。

2024-02-14 16:33:51 1381

原创 Flink 源码剖析|RuntimeContext 接口

每个并行的实例都会包含一个。下面,我们逐类介绍接口的方法。

2024-02-14 14:35:59 978

原创 Flink 源码剖析|Rich Function 的 API 继承关系

子接口改为继承 rich 版本的抽象类即可,在使用中,与使用非 rich 版本一样,直接传给 DataStream API 即可。接口是用于所有 Rich UDF 的基础接口,其中定义了函数的生命周期方法以及访问函数执行上下文的方法。抽象类,所以通常不需要添加额外的方法,只需要将非 Rich 版本接口中的方法改写为抽象方法即可。子接口的 Rich 版本,都是实现了该接口的抽象类,同时,这些抽象类都继承了。子接口的 Rich 版本实现了非 Rich 版本的接口,并继承了。子接口的 rich 版本。

2024-02-14 11:54:08 520

原创 Flink 源码剖析|常用 UDF 函数的使用该方法及继承关系

在 “连接” 后的数据流中,2 个数据流保留各自的类型,但允许两个流的处理逻辑之间共享状态。接口中没有任何方法,以便允许继承的扩展接口能够使用 Java 8 的 lambda 语法实现。为第 2 个数据流中的元素,这 2 个元素是相互成功关联的。输入两个数据流中的各 1 个记录,其类型分别为。类型元素的迭代器,输出 0 个、1 个或多个。类型元素或输入来自第 2 个数据流的 1 个。类型的记录,输出 0 个、1 个或多个。类型的记录,输出 0 个、1 个或多个。类型的记录,输出 0 个、1 个或多个。

2024-02-14 09:17:03 622

原创 Flink 源码剖析|2. 事件时间与 Watermark

不同于处理时间(processing time),事件时间(event time)是各个事件(记录)在生产设备上的发生时间。通常来说,事件时间在进入 Flink 系统之前,就已经嵌入到了每条记录中,即事件时间完全取决于数据,而不是 Flink 系统中的某个时钟。在 Flink 的实现上,每条记录的事件时间是一个 long 类型的毫秒级时间戳。

2024-02-12 18:21:08 1167

原创 Flink 源码学习|使用 Watermark 策略(WatermarkStrategy)【v2 修订版】

使用事件时间时,需要通过 Flink API 的接口配置 watermark 的生成策略。我们将逐段来看这个 API 的各个部分。

2024-02-12 12:35:31 855

原创 Flink 源码学习|WatermarkOutput

在接口中,onEvent()和的参数中均使用实现了接口的output用于发送 watermark。下面我们来看一下在markIdle()接口是很多等大量重要接口的上游,这里我们先介绍与事件时间相关的部分。

2024-02-11 15:15:33 836

原创 Flink 源码学习|WatermarkStrategy 处理空闲数据源

同时,因为下游算子的 watermark 计算方式是获取所有上游数据源的 watermark 的最小值,所以在这种情况下,下游算子的 watermark 无法被更新。是否有更新,如果有更新的话则将重置已空闲时间,否则检查已空闲时间是否已超过判定空闲状态的时间标准。方法,检查是否需要置为空闲状态,并根据该方法的返回值更新空闲状态并向下游发送空闲状态标识。方法并规定将输入流判定为空闲输入流的空闲时间即可。方法被周期性地调用时,会调用计时器实例的。方法会被调用,该方法调用基础生成器的。方法,并调用计时器实例的。

2024-02-11 11:04:05 447

原创 Flink 源码学习|WatermarkStrategy

使用事件时间时,需要通过 Flink API 的接口配置 watermark 的生成策略。我们将逐段来看这个 API 的各个部分。

2024-02-04 13:00:48 433

原创 Flink 源码学习|TimestampAssigner 和 WatermarkGenerator 的序列化处理

通过提供者模式(supplier pattern),可以避免需要在 API 方法中考虑序列化的问题。均有可能需要在不同节点之间进行传输。但是,这两个接口均没有直接继承。以实现可序列化,而是通过可序列化的提供者类(在 Flink 的分布式执行的过程中,

2024-01-29 13:13:09 279

原创 Flink 源码学习|watermark 时间戳指定器

在每次接收到消息时,获取系统时间以更新实例属性中存储的系统时间最大值,并将当前存储的系统时间最大值作为时间戳返回。之所以这样实现,是为了保证即使系统时间被修改(例如配置了多节点时间同步)时,输出的时间戳仍然是单调递增的。这个时间戳分配器适用于已指定有效时间戳的场景,例如从 Kafka 中提取的数据。中提取的时间,将被包括窗口函数在内的所有使用了事件时间的算子使用。存储当前获取到的系统时间的最大值;中,是从事件数据中提取事件时间的工具,中有 3 个类或接口继承了。方法,并直接使用参数。

2024-01-28 18:21:25 401

原创 Flink 源码学习|Watermark 与 WatermarkGenerator

当数据源中消息的事件时间单调递增时,当前事件时间(同时也是最大事件时间)就可以充当 watermark,因为后续到达的消息的事件时间一定不会比当前事件时间小。当输入数据流中消息的事件时间不完全有序,但是对于绝大部分元素,滞后时间通常不会超过一个固定的时间长度时,我们可以通过在当前最大事件时间的基础上减去一个固定延迟时间,来生成 watermark。再到达比 Watermark 的事件时间更小的消息,即在 Watermark 后到达的事件时间更小的消息视作延迟消息。接口,既可以基于消息,也可以基于周期。

2024-01-28 15:59:26 877

原创 Flink|《Flink 官方文档》学习笔记目录

Try Flink:本地模式安装;基于 DataStream API 实现欺诈检测;基于 Table API 实现实时报表;Flink 操作场景实践练习:概览;DataStream API 简介;数据管道 & ETL;流式分析;事件驱动应用;容错管理概念透析:概览;有状态流处理;及时流处理;Flink 架构;词汇表应用开发项目配置:概览;使用 Maven;使用 Gradle;连接器和格式;测试的依赖项;高级配置DataStream API概览执行模式(流 / 批)事件时间:生成

2024-01-28 07:46:22 1146

原创 Flink|《Flink 官方文档 - Operations - Monitoring》学习笔记

摘要计算了所有已完成的 checkpoint 的端到端持续时间、增量 / 全量 checkpoint 数据大小和 checkpoint alignment 期间缓冲的字节数的简单 min / average / maximum 统计信息。需要注意的是,这些统计信息不回在 JobManager 后保存;如果 JobManager 故障重启,这些统计信息将重新计数。

2024-01-26 20:56:34 760

原创 Flink|《Flink 官方文档 - Operations - Debugging》学习笔记

每个独立的 JobManager、TaskManager、HistoryServer、ZooKeeper 守护进程都将stdout和stderr重定向到名称后缀为.out的文件,并将其内部的日志记录写入到.log后缀的文件。此外,也可以使用脚本变量定义日志文件,并将选项括在双引号内以供后续使用。日志文件将使用与默认的.out和.log后缀一起滚动。

2024-01-26 08:29:28 748

原创 Flink|《Flink 官方文档 - Operations - 批处理 shuffle》学习笔记

学习笔记如下:Flink DataStream API 和 Table / SQL 都支持通过批处理执行模式处理有界输入。

2024-01-25 08:34:42 919

原创 Python|pip 及 setuptools 版本问题导致的装包报错问题处理

解决方案:升级 pip 版本。

2024-01-24 23:32:25 381

原创 Flink|提交 PyFlink 作业的踩坑记录

在最初的 PyFlink 作业中,没有使用任何方式在命令行参数、代码中或 pyflink 仓库路径中添加 Kafka 所需的 jar 包。的 whl 文件可以被使用。那么,整理在 TaskManager 日志中出现的所有无法被获取到的包,并使用 wget 直接从 pypi 上下载对应版本适合不同环境的包到缓存地址中。我们可以结合缓存地址中的安装包,观察是哪些包找不断,从而推断 Flink Python UDF 的运行环境。在代码中添加的 Jar 包路径不正确,使用本地存储系统中的文件路径,而没有添加。

2024-01-24 23:30:32 1123

原创 Flink|《Flink 官方文档 - 应用开发 - Python API - 依赖管理》学习笔记

学习笔记如下:当 PyFlink 在本地运行时,用户可以将第三方 Python 库安装在本地 Python 环境中,并将机器学习模型下载到本地。但是,这个方法在远端运行 PyFlink 作业时无法生效。Python DataStream API 和 Python Table API 都提供了支持各种依赖的 API。

2024-01-24 13:24:32 932

原创 Flink|《Flink 官方文档 - Operations - REST API》学习笔记

学习笔记如下:Flink 具有监控 API,可用于查询正在运行的作业以及最近完成的作业的状态和统计信息。该监控 API 被用于 Flink 自己的仪表盘,同时也可用于自定义监控工具。该监控 API 是 REST-ful 风格的,可以接受 HTTP 请求并返回 JSON 格式的数据。该监控 API 由作为JobManager一部分运行的 web 服务器提供后端支持。在默认情况下,该服务器使用 8081 端口,端口号可以通过修改文件的rest.port进行配置。

2024-01-24 07:56:07 805

原创 Flink|《Flink 官方文档 - Operations - 指标》学习笔记

学习笔记如下:Flink 提供了一个指标系统(metric system),以支持将 Flink 运行指标收集并展示到外部系统。

2024-01-23 13:26:17 946

原创 Flink|《Flink 官方文档 - 部署 - 命令行界面 - 提交 PyFlink 作业》学习笔记

提交的 Python 作业,Flink 会执行 python 命令。因此,在启动 Python 作业前,需要先确定当前环境中的 python 命令指向 3.7+ 版本的 Python。命令将 PyFlink 作业提交到 native Kubernetes cluster,这需要一个已经安装了 PyFlink 的 Docker 镜像。参数,可以添加 Python 的文件依赖,这个文件可以是 Python 文件、Python 包或其他文件。参数,可以将 PyFlink 作业提交到指定的 JobManager。

2024-01-22 23:18:03 1047

原创 Flink|《Flink 官方文档 - 应用开发 - Python API - 概览 & 环境安装 & 调试 & 环境变量 & 常见问题》学习笔记

通过便捷脚本,可以指定 PyFlink 的版本,来生成对应的 PyFlink 版本所需的 Python 虚拟环境,否则将安装最新版本的 PyFlink 所对应的 Python 虚拟环境。在作业运行的过程中,日志信息会打印在 TaskManager 的日志文件中。客户端日志:在 PyFlink 作业中,在 Python UDF 之外的地方打印的上下文和调试信息均属于客户端日志。服务端日志:在 PyFlink 作业中,在 Python UDF 中打印的上下文和调试信息均属于服务端日志。

2024-01-22 23:15:59 926

Kaggle:tmdb-box-office-prediction(转结构化数据,用于 SQL 练习)

原数据源(将其训练集结构化): https://www.kaggle.com/c/tmdb-box-office-prediction/data 数据量级+建表语句(含字段含义注释)详见博客: https://dataartist.blog.csdn.net/article/details/132268426 共 15 个表: - movies:电影表 - belongs_to_collection:电影系列表 - person:人员表(演员与剧组人员) - cast_rela:电影与演员的关联表 - crew_rela:电影与剧组人员的关联表 - genres:电影体裁表 - genres_rela:电影与体裁关联表 - keywords:电影关键词表 - keywords_rela:电影与关键词关联表 - production_companies:电影制作公司表 - production_companies_rela:电影与制作公司关联表 - production_countries:电影制作国家表 ……

2023-08-14

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

TA关注的人

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