HBase Java API 示例

HBase2.4.8详细教程(三)Java操作HBase 在idea中建立Maven Java项目。 在pom.xml中引入对应版本的HBase依赖: <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --> <dependency> <groupId>org.apache.hbase</groupId> 阅读详情

#博学谷IT学习技术支持#

环境准备

在idea中创建Maven工程,导入HBase 客户端相关jar包,pom文件配置如下所示:

 <repositories><!--代码库-->
        <repository>
            <id>aliyun</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <releases><enabled>true</enabled></releases>
            <snapshots>
                <enabled>false</enabled>
                <updatePolicy>never</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version></dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

并在resouces下引入log4j.properties文件,可以在控制台清晰地看到日志信息:

log4j.rootLogger=INFO,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p - %m%n

常用类介绍

  1. HBaseConfiguration
    该类是用来创建HBase配置对象,常用的是静态create方法。该方法中返回了Hadoop Configuration 对象,同时加载了HBase中的资源文件。如下:
   Configuration conf = new Configuration();
   conf.setClassLoader(HBaseConfiguration.class.getClassLoader());
   return addHbaseResources(conf);
  1. 管理对象HBaseAdmin和HTable
    两者都是从Connection对象中获取,其中HBaseAdmin对象用于管理表,包括表的创建,删除、禁用等;
    HTable对象主要用于操作表中数据,包括数据的添加、查询、修改、删除等操作
  2. TableDescriptor
    TableDescriptor 对象用于描述表,包括表名、表中列族等。
  3. ColumnFamilyDescriptor
    ColumnFamilyDescriptor 对象用于表述列族信息,包括列族名称、列族中各种属性
  4. Put、Get、Delete
    这些对象用于封装对表中数据的操作,构造方法中传入rowkey信息,根据rowkey对一行数据进行操作,同时还可以添加Column信息,对特定列进行操作。Put用于添加和修改数据,Get用于查询数据,Delete用于删除数据。

常见操作示例

封装创建链接和释放连接方法,创建连接时需要指定ZK集群的IP和端口信息,从而通过ZK集群找到HBase的元数据信息,建立连接:

  public static Connection getConnection(String zkIPStr) throws IOException {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", zkIPStr);
        return ConnectionFactory.createConnection(conf);
    }

    public static void closeConn(Connection conn, Admin admin, Table table) {
        if (table != null) {
            try {
                table.close();
            } catch (IOException e) {
               throw new RuntimeException(e);
            }
        }
        if (admin != null) {
            try {
                admin.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (IOException e) {
                throw new RuntimeException(e);
            }
        }
    }
  1. 创建表
 @Test
    public void createTable() throws IOException {
        //创建连接
        //获取管理对象
        Admin admin = conn.getAdmin();
        //进行操作
        if (admin.tableExists(TableName.valueOf("WATER_BILL"))) {
            return;
        }
        TableDescriptor tableDesc = TableDescriptorBuilder.newBuilder(TableName.valueOf("WATER_BILL"))
                .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder("C1".getBytes()).build()).build();
        admin.createTable(tableDesc);
        //查询结果集
        //释放连接
    }
  1. 添加数据
    @Test
    public void putData() throws IOException {
        table = conn.getTable(TableName.valueOf("WATER_BILL"));
        Put put = new Put("rk001".getBytes());
        put.addColumn("f1".getBytes(), "name".getBytes(), "登卫红".getBytes());
        put.addColumn("f1".getBytes(), "address".getBytes(), "贵州省铜仁市".getBytes());
        put.addColumn("f1".getBytes(), "sex".getBytes(), "男".getBytes());
        table.put(put);
    }
  1. 查询数据
 @Test
    public void queryData() throws IOException {
        table = conn.getTable(TableName.valueOf("WATER_BILL"));
        Get get = new Get("rk001".getBytes());
        Result result = table.get(get);
        List<Cell> cells = result.listCells();
        if (cells != null) {
            for (Cell cell : cells) {
                String row = Bytes.toString(CellUtil.cloneRow(cell));
                String family = Bytes.toString(CellUtil.cloneFamily(cell));
                String columnName = Bytes.toString(CellUtil.cloneQualifier(cell));
                String value = Bytes.toString(CellUtil.cloneValue(cell));
                System.out.println("rowkey: " + row + ", family:column " + family + ":"
                        + columnName + ", value: " + value );
            }
        } else {
            System.out.println("No data");
        }

    }
  1. 删除数据
    @Test
    public void deleteData() throws IOException {
        table = conn.getTable(TableName.valueOf("WATER_BILL"));
        Delete delete = new Delete("rk001".getBytes());
        table.delete(delete);
    }

 @Test
    public void deleteTable() throws IOException {
        admin = conn.getAdmin();
        if (admin.isTableEnabled(TableName.valueOf("WATER_BILL"))) {
            admin.disableTable(TableName.valueOf("WATER_BILL"));
        }
        admin.deleteTable(TableName.valueOf("WATER_BILL"));
    }

  1. 基于Scan的扫描查询
 @Test
    public void scanTable() throws IOException {
        Scan scan = new Scan();
        table = conn.getTable(TableName.valueOf("WATER_BILL"));
        BinaryComparator startTimeComp = new BinaryComparator("2020-06-01".getBytes());
        BinaryComparator endTimeComp = new BinaryComparator("2020-06-30".getBytes());
        SingleColumnValueFilter startTimeFilter
                = new SingleColumnValueFilter("C1".getBytes(), "RECORD_DATE".getBytes(),
                CompareOperator.GREATER_OR_EQUAL, startTimeComp);
        SingleColumnValueFilter endTimeFilter
                = new SingleColumnValueFilter("C1".getBytes(), "RECORD_DATE".getBytes(),
                CompareOperator.LESS_OR_EQUAL, endTimeComp);
        FilterList filterList = new FilterList();
        filterList.addFilter(startTimeFilter);
        filterList.addFilter(endTimeFilter);
        scan.setFilter(filterList);
        scan.addColumn("C1".getBytes(), "RECORD_DATE".getBytes());
        scan.addColumn("C1".getBytes(), "NAME".getBytes());
        scan.addColumn("C1".getBytes(), "NUM_USAGE".getBytes());
        ResultScanner scanner = table.getScanner(scan);
        Iterator<Result> iterator = scanner.iterator();
        while (iterator.hasNext()) {
            Result next = iterator.next();
            List<Cell> cells = next.listCells();
            if (cells != null) {
                for (Cell cell : cells) {
                    String row = Bytes.toString(CellUtil.cloneRow(cell));
                    String family = Bytes.toString(CellUtil.cloneFamily(cell));
                    String columnName = Bytes.toString(CellUtil.cloneQualifier(cell));
                    Object value;
                    if ("NUM_USAGE".equals(columnName)) {
                        value = Bytes.toDouble(CellUtil.cloneValue(cell));
                    } else {
                        value = Bytes.toString(CellUtil.cloneValue(cell));
                    }
                    System.out.println("rowkey: " + row + ", family:column " + family + ":"
                            + columnName + ", value: " + value );
                }
            } else {
                System.out.println("No data");
            }
        }
    }
HBase Java API插入数据示例 在本文中,我们将通过一个简单的示例来演示如何使用HBase的Java API向HBase表中插入数据。HBase是一个分布式的、可扩展的大数据存储系统,基于Google的Bigtable设计,并且是Hadoop生态系统的一部分。在开始之前,请确保您已经正确安装并配置了HBase环境。 阅读详情

相关推荐

HBase总结(十一)hbase Java API 介绍及使用示例

问题导读 1.java api与数据模型是如何对应的? 2.那两个类与HBase数据库有关系? 3.HTable可以用来做什么? 4.如何添加列族、列、列值? 5.hbase查询有几种方式? 几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBa

Java海洋 8万+

24-28-Hbase-Api-DDL

hbase-24-28

qq_37171694的博客 186

HBase(hbase-2.4.9-bin.tar.gz)

HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase 2.x ---- HBase API

根据官方 API 介绍,HBase 的客户端连接由 ConnectionFactory 类来创建(工厂模式),用户使用完成之后需要手动关闭连接。同时连接是一个重量级的,推荐使用一个进程使用一个连接,对 HBase 的命令通过连接中的两个属性 Admin 和 Table 来实现。HBase 创建连接是一个重量级的连接,连接的时候时间花费较多,大约需要等待1min左右,出现下面的示图就代表连接成功了。使用类单例模式,确保使用一个连接,可以同时用于多个线程。这里的表格后续还会用到,这里就先不删除了…

是微风,是晚霞,是无可替代 1069

阿里数据集(cluster-trace-v2018)提取

阿里数据集提取 本数据集采用的是阿里集群数据集-2018 详情可参考该文献:https://blog.youkuaiyun.com/weixin_41988248/article/details/92431588 CSV数据集提取操作见:https://blog.youkuaiyun.com/lucky_shi/article/details/105321149 关于read_csv包的用法见:https://blog.youkuaiyun.com/dc19971118/article/details/107721340 从阿里数据集来看,我

5-StarrySky的博客 3344

深入浅出CenterFusion

结合论文和代码理解CenterFusion

Untitled的专栏 5104

HBase-API

HBase的API操作

weixin_52972575的博客 1333

智能网联汽车电子电气架构(下)

从资产的表现形式, 可以分为数据、 软件、 硬件、 服务等, 而从需要保护的业务过程和活动、 所关注信息的角度, 资产类型可包括基于 ECU 的控制功能、 与特定车辆相关的信息、 车辆状态信息、 用户信息、 配置信息、 特定的软件、 内容等。面向新一代 EEA 的安全需求, 基于芯片提供的 OTP, 或SHE\HSM 的安全存储能力, 实现系统关键数据(身份、 密钥等关键信息) 的安全存储, 保证系统的关键数据不被盗取、 破坏、 改写。结合攻击者的动机与识别出的系统用例, 分析对汽车电子系统可能的攻击。

m0_58838529的博客 1473

HBase Java API 使用示例

在使用HBase Java API 之前,大家首先要了解HBase Java API类,可参考博客:http://www.cnblogs.com/ggjucheng/p/3380267.html 几个相关类与HBase数据模型之间的对应关系 java类HBase数据模型HBaseAdmin数据库(DataBase)HBaseConfigurationHTable表(Table)HTableDescr

会飞的狼 420

Spring Boot集成ShardingSphere实现数据加密及数据脱敏 | Spring Cloud 48

利用ShardingSphere实现: - 数据加密 - 数据脱敏

gmHappy 1万+

3、无限维系统理论中的算子与半群:概念、定理及应用

本博文深入探讨了无限维系统理论中的两个核心概念:里茨谱算子与卢默-菲利普斯定理。文章首先介绍了里茨基的定义与性质,分析了谱、预解集及特征值在无限维系统中的特性,并详细阐述了里茨谱算子的条件及其生成C0-半群的能力,结合阻尼欧拉-伯努利梁模型展示了其应用。随后,文章介绍了卢默-菲利普斯定理及其推论,通过多个偏微分方程实例(如一阶方程、柔性梁、波动方程和扩散问题)说明如何利用该定理判断算子是否生成压缩半群。此外,还强调了状态空间选择和边界条件对系统适定性的重要影响,并总结了相关问题的解决步骤与方法。

flink9streamer的博客 149

HBase Java API介绍及使用示例

几个相关类与HBase数据模型之间的对应关系   java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) HTableDescriptor 列族(Column Family) Put

零度的博客专栏 2192

手把手教你学Simulink——机器人控制场景实例:基于Simulink的双足人形机器人步态生成与ZMP稳定控制仿真

ZMP是地面上合力矩在水平方向为零的点。对于平面行走: [ x_{\text{zmp}} = x_c - \frac{z_c}{g} \ddot{x}_c ]📌稳定性判据ZMP必须始终位于支撑脚的凸包(即脚掌范围内)本文完成了基于Simulink的双足人形机器人ZMP稳定控制仿真,实现了:✅ 基于LIPM生成稳定CoM轨迹✅ 构建ZMP参考与验证机制✅ 设计简化踝关节PD控制器✅ 验证ZMP始终位于支撑脚内 → 动态平衡✅ 为人形机器人步态规划奠定理论基础。

MHD0815的博客 139

Java API 连接 Hbase示例

我的原创地址:https://dongkelun.com/2020/08/19/javaHbase/ 前言 记录一下Java API 连接 Hbase的代码,并记录遇到的异常及解决办法 代码 首先pom.xml里添加hbase-client依赖: <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> &lt

主要分享大数据相关的知识,如Spark、Hudi 999

华为OD机试真题 新系统2026-04-08 Python&JS 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 593

2025华为杯第二十二届中国研究生数学建模竞赛E题:高速列车轴承智能故障诊断问题 - 完整解题分析+完整MATLAB源码!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1999

Hbase Java API 介绍及使用示例

几个相关类与HBase数据模型之间的对应关系 java类HBase数据模型HBaseAdmin数据库(DataBase)HBaseConfigurationHTable表(Table)HTableDescriptor列族(Column Family)Put列修饰符(Column Qualifier)GetScanner一、HBaseConfiguration关系:org.apache.hadoop.

会飞的狼 718

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hbase Java API 介绍及使用示例

几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) HTableDescriptor 列族(Column Family) Put 列修饰

kongjunlongaa的博客 573

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hbase Java API 介绍及使用示例(一)

转自:http://blog.youkuaiyun.com/lifuxiangcaohui/article/details/39997205,暂时未验证,由于版本问题可能有些api已经改动 几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConf

Rome was not built in one day 1102

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Hbase JAVA API和HBase-MapReduce基本示例

1 Region server架构

不以物喜的博客 760

HBase的客户端API与Java示例

1.背景介绍 HBase是一个分布式、可扩展、高性能的列式存储系统,基于Google的Bigtable设计。HBase提供了一种高效的数据存储和查询方式,可以处理大量数据的读写操作。在大数据和实时数据处理领域,HBase是一个非常重要的技术。 在本文中,我们将深入探讨HBase的客户端API与Java示例,揭示其核心概念、算法原理、最佳实践以及实际应用场景。 1.背景介绍 HBase是一个...

AI天才研究院 503

hadoop_hbase Java API 介绍及使用示例

几个相关类与HBase数据模型之间的对应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) HTableDescriptor 列族(Column Family) Put 列修饰

老牛推磨 583
上一篇: 从Top N 问题窥探MapReduce分组前排序思想
下一篇: 浅析HBase架构及读写流程
hello_java_noob_go
博客等级 码龄10年 0粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值