当前位置: 首页 > news >正文

软件工程学习日志2025.9.18

今日重点设计了HBase后端数据插入模块,基于Java API实现了高性能的写入方案。以下为关键代码实现及技术要点:
HBase数据插入工具类
支持单条插入和批量写入操作
public class HBaseInserter {
private static final Logger logger = LoggerFactory.getLogger(HBaseInserter.class);

/*** 单条数据插入方法* @param tableName 表名* @param rowKey 行键* @param columnFamily 列族* @param qualifier 列限定符* @param value 数据值*/
public void insertData(String tableName, String rowKey, String columnFamily, String qualifier, String value) throws IOException {try (Connection connection = ConnectionFactory.createConnection();Table table = connection.getTable(TableName.valueOf(tableName))) {Put put = new Put(Bytes.toBytes(rowKey));put.addColumn(Bytes.toBytes(columnFamily),Bytes.toBytes(qualifier),Bytes.toBytes(value));table.put(put);logger.info("数据插入成功 - RowKey: {}", rowKey);} catch (IOException e) {logger.error("HBase插入失败: {}", e.getMessage());throw new IOException("数据写入HBase失败", e);}
}/*** 批量插入数据* @param tableName 表名* @param dataList 数据列表*/
public void batchInsert(String tableName, List<HBaseData> dataList) throws IOException {try (Connection connection = ConnectionFactory.createConnection();Table table = connection.getTable(TableName.valueOf(tableName))) {List<Put> puts = new ArrayList<>();for (HBaseData data : dataList) {Put put = new Put(Bytes.toBytes(data.getRowKey()));put.addColumn(Bytes.toBytes(data.getColumnFamily()),Bytes.toBytes(data.getQualifier()),Bytes.toBytes(data.getValue()));puts.add(put);}table.put(puts);logger.info("批量插入完成,共{}条数据", dataList.size());} catch (IOException e) {logger.error("批量插入失败: {}", e.getMessage());throw new IOException("批量写入HBase失败", e);}
}

}

/**

  • 数据实体类
    */
    @Data
    @AllArgsConstructor
    class HBaseData {
    private String rowKey;
    private String columnFamily;
    private String qualifier;
    private String value;
    }
http://www.rkmt.cn/news/7672.html

相关文章:

  • https://uupdump.net/
  • 初赛知识点复盘
  • Segment Analytics-iOS SDK - 专业用户行为追踪解决方案
  • 使用 Rust 与 Tesseract OCR 识别英文数字验证码
  • API安全解决方案选型指南:2025年五大关键维度与厂商推荐
  • 别迷茫了!计算机大一新生这样做,四年后远超同龄人 - 编程实战派
  • 解决ifconfig命令没有显示ens33 finalshell连接不上虚拟机
  • CRM管理专业的系统:从数据收集到价值挖掘
  • c/c++实现有栈协程
  • 高阶 INTJ 5w4 整合到 8,是完整的过程,从研究到实用(豆包)
  • hbase安装与配置
  • 发喷山火(volcano)+CF2119F Volcanic Eruptions 解题报告
  • PHP转Go系列 | PHP8 这些新函数让你眼前一亮
  • 代码随想录算法训练营第二天 |209.长度最小的子数组,59. 螺旋矩阵 II
  • 虚拟机5
  • CF2048H Kevin and Strange Operation
  • Visual Studio 离线安装0x80131509
  • Oracle备份恢复:backup as copy保留文件名不变化,只更改路径名
  • 读书笔记:数据库中的预连接神器:位图连接索引
  • 飞算JavaAI:专为Java开发者打造的智能编程革命 - 实践
  • 故障处理:CRS无法随操作系统自动启动故障案例分享
  • typeof()
  • 详细介绍:【C++】C++类和对象—(中)
  • 关于 “Thinking Machines Lab首次发长文” 的一些知识的学习和补充
  • python编程练习(Day4) - 教程
  • CF1630F 题解 | 网络流
  • 攻防世界-secret-galaxy-300 - xxx
  • 实用指南:LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
  • 代码随想录算法训练营第二天 | leetcode 209
  • mpv硬件解码