HBase客户端的批量写缓存BufferedMutator
HBase数据刷写 之前提到过这个方法,那么BufferedMutator是什么?又应该如何实现呢?
写缓存
HBase的每一个put操作实际上是一个RPC操作,将客户端的数据传输到服务器再返回结果,这只适用于小数据量的操作,如果数据量多的话,每次put都需要建立一次RPC的连接(TCP连接),而建立连接传输数据是需要时间的,因此减少RPC的调用可以提高数据传输的效率,减少建立连接的时间和IO消耗。
HBase的客户端API提供了写缓存区,put的数据一开始放在缓存区内,当数量到达指定的容量或者用户强制提交是才将数据一次性提交到HBase的服务器。这个缓冲区可以通过调用 HTable.setAutoFlush(false) 来开启。而新版HBbase的API中使用了BufferedMutator替换了老版的缓冲区,通过BufferedMutator对象提交的数据自动存放在缓冲区中。
BufferedMutator
通过获取 BufferedMutator 对象,并调用 mutator.mutate(List<Mutation> mutations) 方法来进行批量插入数据。可以使用 Put 类型的对象列表作为 mutations 参数进行插入。BufferedMutator 提供了自动管理缓冲区和写入操作的功能,可以提高插入数据的性能。
单次一张表批量写入
Configuration conf = HBaseConfiguration.create();conf.set("hbase.zookeeper.quorum", "zookeeperHost");final BufferedMutator.ExceptionListener listener = new BufferedMutator.ExceptionListener() {@Overridepublic void onException(RetriesExhaustedWithDetailsException e, BufferedMutator mutator) {for (int i = 0; i < e.getNumExceptions(); i++) {LOG.info("Failed to sent put " + e.getRow(i) + ".");}}};BufferedMutatorParams params = new BufferedMutatorParams(TABLE).listener(listener);params.writeBufferSize(123123L);try {Connection conn = ConnectionFactory.createConnection(conf);BufferedMutator mutator = conn.getBufferedMutator(params);Put p = new Put(Bytes.toBytes("someRow"));p.addColumn(FAMILY, Bytes.toBytes("someQualifier"), Bytes.toBytes("some value"));mutator.mutate(p);mutator.close();conn.close();} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}
单次多张表批量写入
private static Map<String, BufferedMutator> tableConnectionMgr = new ConcurrentHashMap<>();
private BufferedMutator getTableConnection(String tableName) throws IOException {if (tableConnectionMgr.get(tableName) != null) {return tableConnectionMgr.get(tableName);}Connection connection = ConnectionFactory.createConnection(config);BufferedMutator table = connection.getBufferedMutator(TableName.valueOf(tableName));tableConnectionMgr.put(tableName, table);log.info("hbase table: {} connect established!", tableName);return tableConnectionMgr.get(tableName);
}
相关文章:
HBase客户端的批量写缓存BufferedMutator
HBase数据刷写 之前提到过这个方法,那么BufferedMutator是什么?又应该如何实现呢? 写缓存 HBase的每一个put操作实际上是一个RPC操作,将客户端的数据传输到服务器再返回结果,这只适用于小数据量的操作,如…...
从多个角度详解map转为list
从多个角度详解map转为list 更新:2023-05-20 19:24 在Java编程中,我们经常使用map存储键值对数据,而有时我们需要把map转为list,本文将从多个方面对map转list做详细的阐述。 一、map转为list的基础方法 Java提供了多种方法将m…...
PHP用CURL发送Content-type为application/json的POST请求方法
HELLO 各位伙伴,最近一直在做项目,没有及时更新。望请见谅。 今天,给大家讲一下php请求第三方接口的时候遇到的问题,大家都知道,在请求第三方接口的时候,会要求我们用post还是get来传参 一般我们传参的时候…...
【程序猿书籍大放送:第二期】《强化学习:原理与Python实战》
🌹欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 爱书不爱输的程序猿:送书第二期 一、搞懂大模型的智能基因,RLHF系统设计关键问答1.RLHF是什么?2.RLHF适用于哪些任务?3…...
SV-6002Y 网络对讲求助模块,带3W功放输出和一路30W功放输出
SV-6002Y 网络对讲求助模块,带3W功放输出和一路30W功放输出 SV-6002Y是我司一款求助对讲模块,具有10/100M以太网接口,其接收网络的音频数据,实时解码播放,还可配置麦克风输入和扬声器输出。SV-6002Y可实现对讲、广播、…...
Nginx详解 二:配置文件部分
文章目录 1. Nginx 配置文件1.1 主配置文件1.2 子配置文件1.3 全局配置1.3.1 修改启动的进程数1.3.2 cpu和work进程绑定(nginx调优)1.3.3 修改PID路径1.3.4 nginx进程的优先级(work进程的优先级)1.3.5 调试work进程打开的文件的个…...
SMC_TRAFO_GantryCutter2 (FB) 带刀片旋向龙门
裁布机:刀片按XY走向,偏转刀片角度。 pi:目标位置矢量(x,y),插值器的输出 v:当前路径切线的矢量,插值器的输出 dOffsetX: x轴的附加偏移 dOffsetY…...
『PyQt5-Qt Designer篇』| 07 Qt Designer中栅格布局和表单布局的使用
07 Qt Designer中栅格布局和表格布局的使用 1 栅格布局1.1 按钮布局1.2 栅格布局中拖入控件1.3 保存并调用2 表单布局2.1 标签+输入控件2.2 保存并调用3 组合水平和垂直布局1 栅格布局 1.1 按钮布局 拖入几个按钮,如图: 选中所有按钮,右键点击布局-栅格布局: 之后可以看到…...
无涯教程-分类算法 - 多项式逻辑回归模型函数
Logistic逻辑回归的另一种有用形式是多项式Logistic回归,其中目标或因变量可以具有3种或更多可能的unordered类型,即没有定量意义的类型。 用Python实现 现在,无涯教程将在Python中实现上述多项式逻辑回归的概念。为此,使用…...
【C++】开源:Box2D动力学库配置与使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Box2D动力学库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...
Druid连接池和Apache的DBUtils
背景 jdbc连接数据库存在着大批量用户进行短时间的SQL连接操作的 需求,而普通用户连接后直接断开与数据库的连接,下次连接需要重新建立桥梁,再频繁访问时。这是很消耗性能的一个操作,因此诞生了数据库连接池技术。提前创建 一些连…...
怎样快速选择正确的可视化图表?
数据可视化的图表类型十分丰富,好的图表可以有效、清晰地呈现数据的信息。对于用户而言,选择正确的图表是十分关键的,不仅可以达到“一图胜千言”的效果,而且会直接影响分析的结果。 用户选择正确的数据可视化图表前,…...
6路液体水位检测芯片VK36W6D SOP16 抗电源干扰及手机干扰特性好
产品品牌:永嘉微电/VINKA 产品型号:VK36W6D 封装形式:SOP16/QFN16L 详细资料:13.5/5.474/4.703 概述 VK36W6D具有6个触摸检测通道,可用来检测6个点的水位。该芯片具有较高的集成度,仅需极少的外部组件便…...
【设备树笔记整理6】中断系统中的设备树
1 中断概念的引入与处理流程 1.1 中断处理框图 1.2 中断程序的使用 主函数() while(1) {do_routine_task(); }中断处理函数() {handle_interrupt_task(); }如何调用中断处理函数? 1.3 ARM对异常(中断)的处理过程 (1)初始化 ① 设置中断…...
微信小程序下载后端返回的文件流
downtest() {let temp {"title": ["排名", "车号", "车队", "车手", "领航", "赛段成绩", "距首车成绩", "距前车差距", "发车时间", "冲刺时间", "赛段…...
Autoware.universe部署04:universe传感器ROS2驱动
文章目录 一、激光雷达驱动二、IMU驱动2.1 上位机配置4.2 IMU校准4.3 安装ROS驱动 三、CAN驱动四、相机驱动4.1 安装驱动4.2 修改相机参数 五、GNSS驱动 本文介绍了 Autoware.universe 各个传感器ROS2驱动,本系列其他文章: Autoware.universe部署01&…...
Spring boot如何工作
越来越方便了 java技术生态发展近25年,框架也越来越方便使用了,简直so easy!!!我就以Spring衍生出的Spring boot做演示,Spring boot会让你开发应用更快速。 快速启动spring boot 请参照官网 Spring | Quic…...
代码随想录打卡—day45—【DP】— 8.29 完全背包应用
1 70. 爬楼梯(完全背包版) 70. 爬楼梯 完全背包装满的选法排列的套路,AC代码: class Solution { public:/*完全背包的思路:1 2是两个物体 可以无限取*/int dp[50]; // 能爬到第i楼的选法的排列数/*dp[j] dp[j - i];dp[0] 1fo…...
2023.8.28日论文阅读
文章目录 NestFuse: An Infrared and Visible Image Fusion Architecture based on Nest Connection and Spatial/Channel Attention Models(2020的论文)本文方法 LRRNet: A Novel Representation Learning Guided Fusion Network for Infrared and Visible Images本文方法学习…...
HAproxy(四十七)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、概述 1.1 简介 1.2 核心功能 1.3 关键特性 1.4 应用场景 二、安装 1.内核配置 2.编译安装 3. 建立配置文件 4. 添加为系统服务 5. 添加3和5运行级别下自启动…...
AI应用开发实战:从RAG系统到多模型API调用的开源项目解析
1. 项目概述:一个AI项目的开源实践最近在GitHub上看到一个名为“hferello/ai”的项目,这个标题非常简洁,甚至可以说有些“神秘”。乍一看,它可能是一个关于人工智能的通用仓库,但点进去之后,你会发现它远不…...
影刀RPA跨境店群运营架构:基于Python的高并发环境隔离与自动化调度系统设计实战
关于我一个曾经死磕底层算法、痴迷于压榨软硬件性能的资深架构师,最后跑去给跨境工作室写店群底层自动化调度系统这件事。 很多以前在技术圈里混的同行,或者是看着我一路从后端重构做到 ImageTransPro 图像处理软件 5.0.3 这种复杂版本迭代的极客朋友们…...
从深夜改格式到一键生成:我的LaTeX参考文献国标化之旅 [特殊字符]
从深夜改格式到一键生成:我的LaTeX参考文献国标化之旅 🎯 【免费下载链接】gbt7714-bibtex-style BibTeX styles for Chinese National Standard GB/T 7714 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style 你是否也曾为了论文…...
ORTC与AI融合:构建下一代智能实时音视频通信系统
1. 项目概述:当实时通信遇上人工智能最近几年,我一直在实时音视频(RTC)领域摸爬滚打,从早期的WebRTC到各种私有协议,技术栈换了一茬又一茬。但有一个趋势越来越明显:单纯的“能通”已经不够了&a…...
Windows11下DOSBox从零到精通的完整配置与实战指南
1. 为什么要在Windows11上使用DOSBox? 很多年轻朋友可能都没见过DOS系统长什么样。作为上世纪80年代到90年代的主流操作系统,DOS虽然界面简陋,但它孕育了无数经典软件和游戏。直到今天,学习汇编语言、运行老式工业控制程序、怀旧经…...
稀疏三角求解器并行优化:GrowLocal算法解析
1. 稀疏三角求解器的并行调度挑战稀疏三角求解器(SpTRSV)是求解线性方程组$Lxb$或$Uxb$的核心算法,其中$L$和$U$分别是稀疏下三角和上三角矩阵。这类问题在科学计算、工程仿真和机器学习等领域有着广泛应用。然而,稀疏矩阵的非零元素分布不规则性导致其并…...
【多目标进化优化】MOEA测试函数:从经典到前沿的挑战与演进
1. MOEA测试函数的起源与核心价值 我第一次接触多目标进化优化(MOEA)测试函数是在2013年的一次算法对比实验中。当时为了验证新设计的NSGA-II改进版本,需要一组标准测试函数作为基准。ZDT系列函数成为了我的首选,但很快就发现这些…...
AI技能开发框架实战:从标准化契约到主流AI工具集成
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫Renol1/skill-creator-pro。光看名字,你可能会觉得这又是一个“技能创建器”,但仔细研究它的代码和设计思路,你会发现它远不止于此。这个项目本质上是一个面向开发者…...
5分钟轻松上手!DanmakuFactory弹幕神器让你的视频瞬间变有趣
5分钟轻松上手!DanmakuFactory弹幕神器让你的视频瞬间变有趣 【免费下载链接】DanmakuFactory 支持特殊弹幕的xml转ass格式转换工具 项目地址: https://gitcode.com/gh_mirrors/da/DanmakuFactory 你是否曾经遇到过这样的困扰:精心收集的B站弹幕在…...
Mac玩转老游戏:手把手教你用Wineskin配置RPG Maker游戏所需RTP环境
Mac玩转老游戏:手把手教你用Wineskin配置RPG Maker游戏所需RTP环境 在Mac上重温经典RPG游戏是许多怀旧玩家的梦想,但RPG Maker游戏往往依赖Windows特有的运行时包(RTP),这让Mac用户望而却步。本文将带你深入探索如何利…...
