- 博客(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 运行和打包报错解决【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
原创 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 源码剖析|累加器
(合并多个累加器的结果)功能的一种数据结构,在作业结束后,可以获取所有部分(各个 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 源码剖析|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
原创 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 练习)
2023-08-14
请问大家有推荐的 CPython 相关教程或书籍吗?
2023-05-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人