Java客户端操作HBase代码

Hbase的java客户端 基础代码 pom.xml 连接hbase 对名称空间操作 对表操作 增删查改 Hbase的Utils工具类代码 import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.TableName; import org.apache.hadoo 阅读详情

Java客户端操作HBase代码

原创 2016年06月17日 16:53:44
  • 2566
package com.cys.zdzn;
import java.io.IOException;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;

public class DemoToHbase {
    static HBaseAdmin hBaseAdmin=null;
    public static void main(String[] args) throws Exception {
    
        // 创建表
        String tableName = "blog"; // 表名
    
        String[] family = { "artitle", "author" }; //列族名
//        createTable(tableName, family);
        
        // 添加数据
        String[] column1 = { "title", "content", "tag" };
        String[] value1 = { "Hadoop", "Hadoop is Number one", "big data" };
        String[] column2 = { "name", "nickname" };
        String[] value2 = { "Jarry", "oldJarry" };
//        addData(tableName, "rk1", column1, value1, column2, value2);
//        addData(tableName, "rk2", column1, value1, column2, value2);
//        addData(tableName, "rk3", column1, value1, column2, value2);
//        addData(tableName, "rk4", column1, value1, column2, value2);
        //根据rowKey查询数据
//        getResult(tableName,"rk2");    
        //扫描整张表
//        getResultScanner(tableName);
        
        //根据startRowKey和stopRowKey扫描表
        getResultScanner(tableName, "rk1", "rk4");
        
        //获取某一列的数据
//        getResultByColumn(tableName,"rk2","author","nickname");
        
        //删除某一列数据
//        deleteColumn(tableName, "rk4", "author", "nickname");
        
        //删除某一行键下的所有列
//        deleteAllColumn(tableName, "rk4");
        
        //删除整张表
//        deleteTable("user");
        
    }

    // 静态的Configuration
    static Configuration configuration = null;
    static {
        configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum", "192.168.10.50");
        configuration.set("hbase.rootdir", "hdfs://192.168.10.50:9000/hbase");
        
    }

    /**
     * 创建表
     * 
     * @param tableName
     *            表名
     * @param family
     *            列族数组
     * @throws Exception
     */
    public static void createTable(String tableName, String[] family)
            throws Exception {
        
        hBaseAdmin = new HBaseAdmin(configuration);
        
        HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
        
        // 遍历列族数组,并将其添加到hTableDescriptor中
        for (int i = 0; i < family.length; i++) {
            
            hTableDescriptor.addFamily(new HColumnDescriptor(family[i]));
            
        }
        // 判断表是否存在
        
        
            System.out.println(".....");
            hBaseAdmin.createTable(hTableDescriptor);
            System.out.println("table create success!");
        
    }

    /**
     * 添加数据
     * 
     * @param tableName
     *            表名
     * @param rowKey
     *            行键
     * @param column1
     *            列族1中的列
     * @param value1
     *            列族1中的列的值
     * @param column2
     *            列族2中的列
     * @param value2
     *            列族2中的列的值
     * @throws Exception
     */
    public static void addData(String tableName, String rowKey,
            String[] column1, String[] value1, String[] column2, String[] value2)
            throws Exception {

        @SuppressWarnings("resource")
        HTable hTable = new HTable(configuration, tableName);
        Put put = new Put(Bytes.toBytes(rowKey));
        // 获取表中的所有列族
        HColumnDescriptor[] columnFamilies = hTable.getTableDescriptor()
                .getColumnFamilies();

        for (int i = 0; i < columnFamilies.length; i++) {
            // 获取列族名字
            String familyName = columnFamilies[i].getNameAsString();
            if (familyName.equals("artitle")) {
                for (int j = 0; j < column1.length; j++) {
                    put.add(Bytes.toBytes(familyName), // 列族
                            Bytes.toBytes(column1[j]), // 列
                            Bytes.toBytes(value1[j])); // 列的值
                }
            }
            if (familyName.equals("author")) {
                for (int j = 0; j < column2.length; j++) {
                    put.add(Bytes.toBytes(familyName),
                            Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));
                }
            }
        }
        hTable.put(put);
        System.out.println("add data success!");
    }

    /**
     * 根据rowKey查询
     * 
     * @param tableName
     *            表名
     * @param rowKey
     *            行键
     * @throws Exception
     */
    
    public static void getResult(String tableName, String rowKey)
            throws Exception {
        @SuppressWarnings("resource")
        HTable hTable = new HTable(configuration, Bytes.toBytes(tableName));
        Get get = new Get(Bytes.toBytes(rowKey));
        Result result = hTable.get(get);
        List<KeyValue> list = result.list();
        for (KeyValue keyValue : list) {
            System.out.println("Family:" +
                          Bytes.toString(keyValue.getFamily()));
            System.out.println("Column:"+
                          Bytes.toString(keyValue.getQualifier()));        
            System.out.println("Value:"+
                         Bytes.toString(keyValue.getValue()));
            System.out.println("TimeStamp:"+keyValue.getTimestamp());
            
        }
    }
    /**
     * Scan扫描整张表
     * @param tableName 表名
     * @throws Exception 
     */
    public static void getResultScanner(String tableName) throws Exception{
        HTable hTable=new HTable(configuration, tableName);
        Scan scan=new Scan();
        ResultScanner rs=null;
        try{
            rs=hTable.getScanner(scan);
            for (Result result : rs) {
                List<KeyValue> list = result.list();
                for (KeyValue keyValue : list) {
                    System.out.print("RowKey:"+
                                   Bytes.toString(keyValue.getRow()));
                    System.out.print(" Family:"+
                                   Bytes.toString(keyValue.getFamily()));
                    System.out.print(" Column:"+
                                   Bytes.toString(keyValue.getQualifier()));            
                    System.out.print(" Value:"+
                                   Bytes.toString(keyValue.getValue()));
                    System.out.print(" TimeStamp:"+keyValue.getTimestamp());
                    System.out.println(" \n===================================");
                }
            }
        }finally{
            rs.close();
        }
    }
    /**
     * 根据star_rowKey、stop_rowKey扫描Hbase表
     * @param tableName 表名
     * @param start_rowkey 开始行键
     * @param stop_rowkey  结束行键
     * @throws IOException
     */
     public static void getResultScanner(String tableName, 
                String start_rowkey,String stop_rowkey) throws IOException {
            Scan scan = new Scan();
            //注意下面两行代码
            scan.setStartRow(Bytes.toBytes(start_rowkey));
            scan.setStopRow(Bytes.toBytes(stop_rowkey));
            ResultScanner rs = null;
            HTable table = new HTable(configuration, Bytes.toBytes(tableName));
            try {
                rs = table.getScanner(scan);
                for (Result r : rs) {
                    for (KeyValue kv : r.list()) {
                        System.out.println("row:" + Bytes.toString(kv.getRow()));
                        System.out.println("family:"
                                + Bytes.toString(kv.getFamily()));
                        System.out.println("qualifier:"
                                + Bytes.toString(kv.getQualifier()));
                        System.out
                                .println("value:" + Bytes.toString(kv.getValue()));
                        System.out.println("timestamp:" + kv.getTimestamp());
                        System.out
                                .println("-------------------------------------------");
                    }
                }
            } finally {
                rs.close();
            }
        }
     /**
      * 读取某一列的数据
      * @param tableName 表名
      * @param rowKey 行键
      * @param falimyName 列族名
      * @param ColumnName 列名
      * @throws Exception
      */
     public static void getResultByColumn(String tableName,String rowKey,
             String falimyName,String columnName) throws Exception{
         HTable hTable=new HTable(configuration, tableName);
         Get get=new Get(Bytes.toBytes(rowKey));
         //指明列族与列
         get.addColumn(Bytes.toBytes(falimyName), Bytes.toBytes(columnName));
         Result result = hTable.get(get);
         List<KeyValue> list = result.list();
         for (KeyValue keyValue : list) {
            System.out.print(" Family:"+
                       Bytes.toString(keyValue.getFamily()));
            System.out.print(" Column:"+
                           Bytes.toString(keyValue.getQualifier()));            
            System.out.print(" Value:"+
                           Bytes.toString(keyValue.getValue()));
            System.out.print(" TimeStamp:"+keyValue.getTimestamp());
            System.out.println(" \n===================================");
        }
     }
     /**
      * 删除某一列数据
      * @param tableName 表名
      * @param rowKey 行键
      * @param familyName  列族
      * @param columnName  列名
     * @throws Exception 
      */
     public static void deleteColumn(String tableName,String rowKey,
                         String familyName,String columnName) throws Exception{
         HTable hTable=new HTable(configuration, tableName);
         Delete delete=new Delete(Bytes.toBytes(rowKey));
         delete.deleteColumn(Bytes.toBytes(familyName), 
                               Bytes.toBytes(columnName));
        hTable.delete(delete);
        System.out.println(columnName+" deleted!");
     }
     /**
      * 删除某一行键下的所有列
      * @param tableName 表名
      * @param rowKey  行键
      * @throws Exception
      */
     public static void deleteAllColumn(String tableName,String rowKey) throws Exception{
         HTable hTable=new HTable(configuration, tableName);
         Delete delete=new Delete(Bytes.toBytes(rowKey));
         hTable.delete(delete);
         System.out.println("all columns deleted!");
     }
     
     /**
      * 删除整张表
      * @param tableName 表名
     * @throws Exception 
      */
     @SuppressWarnings("resource")
     public static void deleteTable(String tableName) throws Exception{
        
        HBaseAdmin hBaseAdmin=new HBaseAdmin(configuration);
         if(hBaseAdmin.tableExists(tableName)){
             hBaseAdmin.disableTable(tableName);
             hBaseAdmin.deleteTable(tableName);
             System.out.println("table deleted!");
         }
     }
}
HBase Java基础操作 Apache HBase 是一个开源的、分布式的、可扩展的大数据存储系统,它基于 Google 的 Bigtable 模型。使用 Java 操作 HBase 通常需要借助 HBase 提供的 Java API。以下是一个基本的示例,展示了如何在 Java 中连接到 HBase 并执行一些基本的操作,如创建表、插入数据、扫描表以及删除数据。 阅读详情

相关推荐

JAVA连接HBase客户端及HBase写入数据和读取数据原理解析

JAVA连接HBase客户端 接着上篇文章进行代码的实践,从JAVA 客户端对 HBase的客户端进行一系列操作 工具类:HbaseUtil 静态代码块一次性创建连接对象 并赋值 返回连接对象 Connection Table对象的创建 Admin对象的创建 数据的展示 package cn._doit19.hbase.utils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hba.

周星星 2241

Hbase开发笔记

用eclipse编程实现对hbase中表的数据的增加 先启动hadoop,之后启动hbase 创建一个新的java project,命名为hbase_study,创建一个com.study.hbase的包,在里面添加了EduAppend的类 程序如下 package com.study.hbase; import java.io.IOException; import

needyit的博客 587

鸿蒙ijkplayer播放器调优实战:从卡顿掉帧到流畅播放RTSP,我都调了哪些参数?

本文深入解析鸿蒙平台上ijkplayer播放器优化RTSP流媒体播放的关键参数,解决卡顿、掉帧等问题。通过调整缓冲区管理、帧处理策略和网络超时设置,实现流畅播放体验,特别适用于监控和直播等高实时性场景。

weixin_29304021的博客 242

Hbase(六) hbase Java API

一、 几个主要 Hbase API 类和数据模型之间的对应关系: 1、 HBaseAdmin关系: org.apache.hadoop.hbase.client.HBaseAdmin作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。 2、 HBaseConfiguration关系: org...

weixin_30628801的博客 521

振动能量采集技术:从原理到实战,破解物联网供电难题

能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考

weixin_42660494的博客 569

【电机控制入门】——电机控制书籍推荐

电机控制入门书籍推荐及分享 阅读须知: 1.电机控制的入门是涉及到机械、电子与控制等复杂交叉学习,它需要持续投入时间才可以看到学习的效果,如同“一万小时定律”。俗话说,九层之台,起于垒土,因此电机控制入门没有所谓的速成培训班。相反,还需要夯实好一定的基础。为此,博主建议从基础理论抓起,故推荐相关的书籍并分享给大家。 2.学习电机贵在动手实践,无论是借助于MATLAB/Simulink仿真平台来验证理论分析,或是使用板子对所设计的控制系统进行物理实现,博主极力推荐在一定基础(看完部分以下推荐的书籍),一边动手

昔时扬尘处 3万+

hbase 新旧API对比

1.org.apache.hadoop.hbase.client.Put 取消了无参的构造方法 Put类不再继承Writable类 0.94.6时public class Put extends Mutation implements HeapSize, Writable, Comparable 0.96.0时public class Pu

Jor_rosen的技术博客 5096

word2vector入门教程

摘要: 网上已经有许多对w2v的介绍了,这里只是做一个简单的概括。下面这篇文章我认为是关于W2V写的比较好的文章,读者有兴趣可以先参考一下: w2v参考文章1 另外一篇是关于Skip-Gram和CBow的介绍。 Skip-Gram&CBOW 逻辑比较清晰的综述文章: 综述文章 数学原理很清晰很短的一篇文章(也有关于负采样的简单说明) 参考文章 1.什么

SCUT_Sam 1万+

HBase基本概念

转自:http://www.bcmeng.com/hbase-basic/ HBase是什么 HBase构建在 HDFS 之上的分布式列式键值存储系统。HBase内部管理的文件全部存储在HDFS中。 HBase VS HDFS HDFS适合批处理场景 不支持数据随机查找 不适合增量数据处理 不支持数据更新 HBase VS RDBMS 范式化和反范...

210

代码复现——SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架

根据《SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs》(《SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架》)论文思路,简单复现代码,以实现SymAgent中的Agent-Planner和Agent-Executor模块。Agent-Planner利用大语言模型的归纳推理能力从知识图谱中提取符号规则,指导高效的问题分解。

qq_60040306的博客 1607

当NetApp 7-mode遇到单控制器故障:HA模式手动修复全记录

本文详细记录了NetApp 7-mode存储系统在单控制器故障时的应急修复过程,包括HA配置重建、磁盘初始化和业务恢复等关键步骤。通过实战案例解析如何解决`VIA Interconnect is down`等典型问题,为企业级存储系统的高可用保障提供实用指南。

yolo5detector的博客 247

Java客户端操作HBase:插入数据(逐条插入与批量插入)代码示例

学亮编程手记 2432

弘玑RPA进阶攻略

01.弘玑RPA产品概要。02.设计器的安装与卸载。03.设计器特性与使用。

长安诗社社长@-梁瀚文- https://github.com/HevnChin https://gitee.com/HevnChin 3647

java客户端连接操作Hbase示例代码

  前提是hbase已经可以正常使用了。   maven依赖: &lt;dependency&gt; &lt;groupId&gt;org.apache.hbase&lt;/groupId&gt; &lt;artifactId&gt;hbase-client&lt;/artifactId&gt; &lt;version&gt;1.2.0&lt;/versio...

267

2025年最新自动化/控制保研夏令营&预推免面试真题分享(东南/浙大/华科清华)

笔者来2021级本科自动化专业,以下部分将介绍我在夏令营以及预推免期间发生经历和问题。

Control Everything 2646

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java客户端操作HBase:创建表代码示例

两个Configuration的区别: jar包最好是将hbase安装目录中的直接拷贝过来,我使用pom文件中的坐标不好使 运行结果:使用list查看已经成功创建了表t_buy_cart ...

学亮编程手记 846

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python kerberos hbase_kerberos下JAVA代码操作hbase的方式(客户端方式,应用程序方式)...

(一)如果部署JAVA 代码的主机用户获取了kerberos权限情况下假设主机名是:clientsu - client 登录主机后kinit -kt /keytab的路径/client.keytab client@STARYEA.COM编写的java代码入下:public static void main(String[] args) throws IOException, Interrupted...

weixin_39755218的博客 210

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

kerberos下JAVA代码操作hbase的方式(客户端方式,应用程序方式)

(一)如果部署JAVA 代码的主机用户获取了kerberos权限情况下 假设主机名是:client su - client 登录主机后 kinit -kt /keytab的路径/client.keytab client@STARYEA.COM 编写的java代码入下: public static void main(String[] args) throws ...

weixin_30321709的博客 216

hbase的java客户端

hbase提供了java客户端去操作数据,我们通过创建一个maven项目来实现简单的数据操作。 pom.xml添加hbase插件 <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version&...

qq_25542879的博客 909

HBase(2) Java 操作 HBase 教程

一、简介 在上一篇文章HBase 基础入门中,我们已经介绍了 HBase 的一些基本概念,以及如何安装使用的方法。 那么,作为一名 Javaer,自然是希望用 Java 的方式来与 HBase 进行对话了。 所幸的是,HBase 本身就是用 Java 编写的,天生自带了 Java 原生API。 我们可以通过 hbase-client 来实现 HBase 数据库的操作。 所以,这次主要介绍该组...

华为云官方博客 1992

《Hbase不睡觉》笔记总结(07)-hbase客户端 API入门

hbase客户端 API入门

weixin_40458736的博客 275

Hbase入门——客户端(Java,Shell,Thrift,Rest...

Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等。 下面是这几种客户端的常见用法。 一、原生Java客户端 原生java客户端是hbase最主要,最高效的客户端。 涵盖了增删改查等API,还实现了创建,删除,修改表等DDL操作。 配置java连接hbase Java连接HBase需要两个类: HBaseCo...

heima201907的博客 815

[Java大数据入门]Hbase Java编程客户端

文章目录一、添加pom依赖二、Hbase Java客户端代码三、测试四、总结 前文已经搭建好Hadoop和Hbase的伪分布式环境,现在我们就使用Hbase Java客户端来编写Hbase的增删改查示例代码 一、添加pom依赖 我们使用的Hbase版本为1.2.0-cdh5.7.0,使用1.3.0版本的客户端,在pom文件中添加如下文件即可 &amp;lt;dependency&amp;gt; &amp;lt;g...

刘梦浩的博客 792
上一篇: JUnit神奇的报错 java.lang.Exception:No tests found matching
下一篇: 如何通过JAVA客户端访问Hbase
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值