Paimon写入性能
写入性能
Paimon的写入性能与检查点密切相关,因此需要更大的写入吞吐量:
- 增加检查点间隔,或者仅使用批处理模式。
- 增加写入缓冲区大小。
- 启用写缓冲区溢出。
- 如果您使用固定存储桶模式,请重新调整存储桶数量。
1 并行度
建议sink的并行度小于等于bucket的数量,最好相等。
| 选项 | 必需的 | 默认 | 类型 | 描述 |
|---|---|---|---|---|
| sink.parallelism | No | (none) | Integer | 定义sink的并行度。默认情况下,并行度由框架使用上游链式运算符的相同并行度来确定。 |
2 Compaction
当Sorted Run数量较少时,Paimon writer将会在单独的线程中异步执行压缩,因此记录可以连续写入表中。然而,为了避免Sorted Runs的无限增长,当Sorted Run的数量达到阈值时,writer将不得不暂停写入。下表属性确定阈值。
| 选项 | 必需的 | 默认 | 类型 | 描述 |
|---|---|---|---|---|
| num-sorted-run.stop-trigger | No | (none) | Integer | 触发停止写入的Sorted Runs次数,默认值为 ‘num-sorted-run.compaction-trigger’ + 1。 |
- 当
num-sorted-run.stop-trigger变大时,写入停顿将变得不那么频繁,从而提高写入性能。 - 如果该值变得太大,则查询表时将需要更多内存和CPU时间。如果您担心内存 OOM,请配置
sort-spill-threshold。它的值取决于你的内存大小。
3 优先考虑写入吞吐量
如果希望某种模式具有最大写入吞吐量,则可以缓慢而不是匆忙地进行Compaction。可以对表使用以下策略:
num-sorted-run.stop-trigger = 2147483647
sort-spill-threshold = 10
此配置将在写入高峰期生成更多文件,并在写入低谷期逐渐合并到最佳读取性能。
4 触发Compaction的Sorted Run数
Paimon使用LSM树,支持大量更新。LSM在多次Sorted Runs中组织文件。从LSM树查询记录时,必须组合所有Sorted Runs以生成所有记录的完整视图。
过多的Sorted Run会导致查询性能不佳。为了将Sorted Run的数量保持在合理的范围内,Paimon writers将自动执行Compaction。下表属性确定触发Compaction的最小Sorted Run数。
| 选项 | 必需的 | 默认 | 类型 | 描述 |
|---|---|---|---|---|
| num-sorted-run.compaction-trigger | No | 5 | Integer | 触发Compaction的Sorted Run数。包括0级文件(一个文件一级排序运行)和高级运行(一个一级排序运行)。 |
5 写入初始化
在写入初始化时,bucket的writer需要读取所有历史文件。如果这里出现瓶颈(例如同时写入大量分区),可以使用 write-manifest-cache 缓存读取的manifest数据,以加速初始化。
6 内存
Paimon writer中主要占用内存的地方有3个:
- Writer的内存缓冲区,由单个任务的所有Writer共享和抢占。该内存值可以通过
write-buffer-size表属性进行调整。 - 合并多个Sorted Run以进行Compaction时会消耗内存。可以通过
num-sorted-run.compaction-trigger选项进行调整,以更改要合并的Sorted Run的数量。 - 如果行非常大,在进行Compaction时一次读取太多行数据可能会消耗大量内存。减少
read.batch-size选项可以减轻这种情况的影响。 - 写入列式(ORC、Parquet等)文件所消耗的内存,不可调。
相关文章:
Paimon写入性能
写入性能 Paimon的写入性能与检查点密切相关,因此需要更大的写入吞吐量: 增加检查点间隔,或者仅使用批处理模式。增加写入缓冲区大小。启用写缓冲区溢出。如果您使用固定存储桶模式,请重新调整存储桶数量。 1 并行度 建议sink…...
Golang 并发机制-5:详解syn包同步原语
并发性是现代软件开发的一个基本方面,Go(也称为Golang)为并发编程提供了一组健壮的工具。Go语言中用于管理并发性的重要包之一是“sync”包。在本文中,我们将概述“sync”包,并深入研究其最重要的同步原语之一…...
排序算法与查找算法
1.十大经典排序算法 我们希望数据以一种有序的形式组织起来,无序的数据我们要尽量将其变得有序 一般说来有10种比较经典的排序算法 简单记忆为Miss D----D小姐 时间复杂度 :红色<绿色<蓝色 空间复杂度:圆越大越占空间 稳定性&…...
如何构建ObjC语言编译环境?构建无比简洁的clang编译ObjC环境?Windows搭建Swift语言编译环境?
如何构建ObjC语言编译环境? 除了在线ObjC编译器,本地环境Windows/Mac/Linux均可以搭建ObjC编译环境。 Mac自然不用多说,ObjC是亲儿子。(WSL Ubuntu 22.04) Ubuntu可以安装gobjc/gnustep和gnustep-devel构建编译环境。 sudo apt-get install gobjc gnus…...
数据结构课程设计(三)构建决策树
3 决策树 3.1 需求规格说明 【问题描述】 ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的…...
深度剖析八大排序算法
欢迎并且感谢大家指出我的问题,由于本人水平有限,有些内容写的不是很全面,只是把比较实用的东西给写下来,如果有写的不对的地方,还希望各路大牛多多指教!谢谢大家!🥰 在计算机科学领…...
python-leetcode-二叉树的层序遍历
102. 二叉树的层序遍历 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right from coll…...
毕业设计:基于深度学习的高压线周边障碍物自动识别与监测系统
目录 前言 课题背景和意义 实现技术思路 一、算法理论基础 1.1 卷积神经网络 1.2 目标检测算法 1.3 注意力机制 二、 数据集 2.1 数据采集 2.2 数据标注 三、实验及结果分析 3.1 实验环境搭建 3.2 模型训练 3.2 结果分析 最后 前言 📅大四是整个大学…...
顺序表(ArrayList)
1、简介 顺序表是用一段物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下 采用数组存储 。在 数组 上完成数据的增删查改。( 顺序表的底层结构是一个数组 ) 2、顺序表的实现 下面是顺序表的一些基本成员和方法,能够…...
【Hadoop】Hadoop的HDFS
这里写目录标题 HDFS概述HDFS产出背景及定义HDFS产生背景HDFS定义 HDFS优缺点HDFS优点HDFS缺点 HDFS组成架构HDFS文件块大小 HDFS的Shell操作常用命令实操准备工作上传下载HDFS直接操作 HDFS的API操作客户端环境准备HDFS的API案例实操HDFS文件上传HDFS文件下载HDFS文件更名和移…...
C++ Primer 迭代器
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
使用 Postman 进行 API 测试:从入门到精通
使用 Postman 进行 API 测试:从入门到精通 使用 Postman 进行 API 测试:从入门到精通一、什么是 API 测试?二、Postman 简介三、环境搭建四、API 测试流程1. 收集 API 文档2. 发送基本请求示例:发送 GET 请求示例代码(…...
Leetcode面试高频题分类刷题总结
https://zhuanlan.zhihu.com/p/349940945 以下8个门类是面试中最常考的算法与数据结构知识点。 排序类(Sort): 基础知识:快速排序(Quick Sort), 归并排序(Merge Sort)的…...
8.原型模式(Prototype)
动机 在软件系统中,经常面临着某些结构复杂的对象的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 之前的工厂方法和抽象工厂将抽象基类和具体的实现分开。原型模式也差不多&#…...
简单介绍一下什么是OpenFeign
OpenFeign是什么? OpenFeign是一个声明式的Http客户端,它可以用来发起Http请求 它主要用于SpringCloud微服务之间的通讯,让调用另一个服务的Java方法和调用本地方法一样快速和便捷 之前我们是用RestTemplate写一大堆东西发起Http请求远程调…...
力扣动态规划-20【算法学习day.114】
前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.网格中的最小路径代价 题目链接…...
Codeforces Round 1002 (Div. 2)(部分题解)
补题链接 A. Milya and Two Arrays 思路:题意还是比较好理解,分析的话我加了一点猜的成分,对a,b数组的种类和相加小于4就不行,蒋老师的乘完后小于等于2也合理。 AC代码: #include <bits/stdc.h> u…...
在线销售数据集分析:基于Python的RFM数据分析方法实操训练
一、前言 个人练习,文章用于记录自己的学习练习过程,分享出来和大家一起学习。 数据集:在线销售数据集 分析方法:RFM分析方法 二、过程 1.1 库的导入与一些必要的初始设置 import pandas as pd import datetime import matplo…...
小程序设计和开发:要如何明确目标和探索用户需求?
一、明确小程序的目标 确定业务目标 首先,需要明确小程序所服务的业务领域和目标。例如,是一个电商小程序,旨在促进商品销售;还是一个服务预约小程序,方便用户预订各类服务。明确业务目标有助于确定小程序的核心功能和…...
【C语言深入探索】:指针高级应用与极致技巧(二)
目录 一、指针与数组 1.1. 数组指针 1.2. 指向多维数组的指针 1.2.1. 指向多维数组元素的指针 1.2.2. 指向多维数组行的指针 1.3. 动态分配多维数组 1.4. 小结 二、指针与字符串 2.1. 字符串表示 2.2. 字符串处理函数 2.3. 代码示例 2.4. 注意事项 三、指针与文件…...
2.策略模式(Strategy)
定义 定义一系列算法,把它们一个个封装起来,并且使他们可互相替换(变化)。该模式使算法可独立于使用它的客户程序(稳定)而变化(拓展,子类化)。 动机(Motiva…...
手写MVVM框架-构建虚拟dom树
MVVM的核心之一就是虚拟dom树,我们这一章节就先构建一个虚拟dom树 首先我们需要创建一个VNode的类 // 当前类的位置是src/vnode/index.js export default class VNode{constructor(tag, // 标签名称(英文大写)ele, // 对应真实节点children,…...
【Blazor学习笔记】.NET Blazor学习笔记
我是大标题 我学习Blazor的顺序是基于Blazor University,然后实际内容不完全基于它,因为它的例子还是基于.NET Core 3.1做的,距离现在很遥远了。 截至本文撰写的时间,2025年,最新的.NET是.NET9了都,可能1…...
C++11中的bind
官方文档对于bind接口的概述解释:Bind function arguments 在C11中,std::bind 是一个非常有用的工具,用于将函数、成员函数或函数对象与特定的参数绑定在一起,生成一个新的可调用对象。std::bind 可以用于部分应用函数参数、改变…...
llama.cpp的C语言API使用
我们知道,一般运行大语言模型都是在Python上运行的,可是Python的性能太差了,不适合用于生产环境,因此可以采用llama.cpp提供的API在C语言上运行大模型。 llama.cpp的下载 Windows下的下载 我们需要下载llama.cpp的两个部分&…...
鼠标拖尾特效
文章目录 鼠标拖尾特效一、引言二、实现原理1、监听鼠标移动事件2、生成拖尾元素3、控制元素生命周期 三、代码实现四、使用示例五、总结 鼠标拖尾特效 一、引言 鼠标拖尾特效是一种非常酷炫的前端交互效果,能够为网页增添独特的视觉体验。它通常通过JavaScript和C…...
基于 docker 的mysql 5.7 主备集群搭建
创建挂载目录和配置文件 主节点 mkdir -p /mysql_master/mysql/log mkdir -p /mysql_master/mysql/data mkdir -p /mysql_master/mysql/conf vim /mysql_master/mysql/conf/my.cnf[mysqld] datadir/var/lib/mysql #MySQL 数据库文件存放路径 server_id 1 #指定数据库服务器的…...
金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行
金山打字游戏2010绿色版,Win7-11可用DxWnd完美运行 链接:https://pan.xunlei.com/s/VOIAYCzmkbDfdASGJa_uLjquA1?pwd67vw# 进入游戏后,如果输入不了英文字母(很可能是中文输入状态),就按一下“Shift”键…...
爬虫学习笔记之Robots协议相关整理
定义 Robots协议也称作爬虫协议、机器人协议,全名为网络爬虫排除标准,用来告诉爬虫和搜索引擎哪些页面可以爬取、哪些不可以。它通常是一个叫做robots.txt的文本文件,一般放在网站的根目录下。 robots.txt文件的样例 对有所爬虫均生效&#…...
(10) 如何获取 linux 系统上的 TCP 、 UDP 套接字的收发缓存的默认大小,以及代码范例
(1) 先介绍下后面的代码里要用到的基础函数: 以及: (2) 接着给出现代版的 读写 socket 参数的系统函数 : 以及: (3) 给出 一言的 范例代码,获取…...
