HBase Java API

HBase Java基础操作 Apache HBase 是一个开源的、分布式的、可扩展的大数据存储系统,它基于 Google 的 Bigtable 模型。使用 Java 操作 HBase 通常需要借助 HBase 提供的 Java API。以下是一个基本的示例,展示了如何在 Java 中连接到 HBase 并执行一些基本的操作,如创建表、插入数据、扫描表以及删除数据。 阅读详情

        1. createTable1 创建表 create 'tableName','columnFamily'
        2. descTable  表的描述 -- 打印表的列族的名字
        3. modifyTable 替换该表tableName的所有列簇
        4. getAllTables 获取HBase中所有的表
        ------------------------------------------------
        5. putData 更新、插入数据
        ------------------------------------------------
        6. addData 添加数据
        ------------------------------------------------
        7. getResult1 根据rowkey进行查询
        8. getResult2 查询指定的某列
        9. getResultScann 遍历一个表中的所有数据
        10. getResultByVersion 查询某列数据的某个版本信息
        -------------------------------------------------
        11. deleteColumn1 删除指定列
        12. deleteColumn2 删除指定的某个rowkey
        13. disableTable 让表失效
        14. dropTable 删除表

package HbaseDome;
 
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
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.TableName;
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.protobuf.generated.ZooKeeperProtos.Table;
import org.apache.hadoop.hbase.util.Bytes;

public class Hbasedome implements HBaseDemoInterface{
	
	//连接HBase集群
	static Configuration conf =null;
    private static final String ZKconnect="192.168.123.212:2181,192.168.123.213:2181,192.168.123.214:2181";
    static{
        conf=HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", ZKconnect);
    }
	
	public static void main(String[] args) {
	
		Hbasedome a =new Hbasedome();
		
		Result result = a.getResult("table03", "usr001");
        List<Cell> cells = result.listCells();
        for (int i = 0; i < cells.size(); i++) {
            Cell cell = cells.get(i);
			System.out.println( Bytes.toString(cell.getRow()) + "\t" + 
								Bytes.toString(cell.getFamily()) + "\t" + 
								Bytes.toString(cell.getQualifier()) + "\t" + 
								Bytes.toString(cell.getValue()) + "\t" +                 
                                cell.getTimestamp());

        }
         
        List<KeyValue> list = result.list();
        for (int i = 0; i < list.size(); i++) {
            KeyValue kv = list.get(i);
            System.out.println( Bytes.toString(kv.getRow()) + "\t" + 
								Bytes.toString(kv.getFamily()) + "\t" + 
								Bytes.toString(kv.getQualifier()) + "\t" + 
								Bytes.toString(kv.getValue()) + "\t" + 
								kv.getTimestamp());
        }
        
		
	}
	
}
具体的方法见下面,有详述!
------------------------------------------------------------------------------------
	//创建表方式一 (参数是表名、列族。和hbase的命令:create 'hbase','familiy' 一致)
	public void createTable1(String tableName, String[] family) throws Exception {
	
        HBaseAdmin admin=new HBaseAdmin(conf);
        HTableDescriptor desc =new HTableDescriptor(tableName);
        
        for(int i=0;i<family.length;i++){
            desc.addFamily(new HColumnDescriptor(family[i]));
        }
        if(admin.tableExists(tableName)){
            System.out.println("表已经存在,别瞎输行吗");
        }else{
            admin.createTable(desc);
            System.out.println("表创建成功");
        }
    }
	
	------------------------------------------------------------------------------------
	//表的描述 -- 打印表的列族的名字
    public void descTable(String tableName) throws Exception {
        HBaseAdmin admin=new HBaseAdmin(conf);
        HTable table=new HTable(conf, tableName);
        HTableDescriptor desc =table.getTableDescriptor();
        HColumnDescriptor[] columnFamilies = desc.getColumnFamilies();
     
        for(HColumnDescriptor t:columnFamilies){
            System.out.println(Bytes.toString(t.getName()));
        }
         
    }
	
	------------------------------------------------------------------------------------
	//这种方式是替换该表tableName的所有列簇
    public void modifyTable(String tableName) throws Exception {
        HBaseAdmin admin=new HBaseAdmin(conf);
        HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));
        htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf3")));
        htd.addFamily(new HColumnDescriptor(Bytes.toBytes("cf2")));
        admin.modifyTable(tableName, htd);
 
        //删除该表tableName当中的特定的列簇
        admin.deleteColumn(tableName, "cf3");
        System.out.println("修改成功");
         
    }
	
	------------------------------------------------------------------------------------
	// 获取HBase中所有的表
    public void getAllTables() throws Exception {
	
        HBaseAdmin admin =new HBaseAdmin(conf);
         
        String[] tableNames = admin.getTableNames();
        for(int i=0;i<tableNames.length;i++){
            System.out.println(tableNames[i]);
        }
    }
	
	------------------------------------------------------------------------------------
	//更新数据  插入数据
    public void putData(String tableName, String rowKey, String familyName, String columnName, String value)
            throws Exception {
        HTable htable=new HTable(conf, Bytes.toBytes(tableName));
        Put put=new Put(Bytes.toBytes(rowKey));
        put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
        htable.put(put);
         
    }
	
	------------------------------------------------------------------------------------
	//为表添加数据 --- 向列族lie01 添加某几列数据,列族lie02 添加某几列数据
    public void addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2,
            String[] value2) throws Exception {
			
        HTable htable=new HTable(conf, Bytes.toBytes(tableName));
        Put put=new Put(Bytes.toBytes(rowKey));
        HColumnDescriptor[] columnFamilies = htable.getTableDescriptor().getColumnFamilies();
		
        for(int i=0;i<=columnFamilies.length;i++){
            String nameAsString = columnFamilies[i].getNameAsString();
            if(nameAsString.equals("lie01")){
                for(int j=0;j<column1.length;j++){
                    put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));
                }
            }
            if(nameAsString.equals("lie02")){
                for(int j=0;j<column2.length;j++){
                    put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));
                }
            }
             
        }
        htable.put(put);
        System.out.println("addData ok!");
    }
	
	------------------------------------------------------------------------------------
	//根据rowkey 查询
    public Result getResult1(String tableName, String rowKey) throws Exception {
	
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
        Get get=new Get(Bytes.toBytes(rowKey));
        Result result=htable.get(get);
		
      for(KeyValue k:result.list()){
          System.out.println(Bytes.toString(k.getFamily()));
          System.out.println(Bytes.toString(k.getQualifier()));
          System.out.println(Bytes.toString(k.getValue()));
          System.out.println(k.getTimestamp());
      }
        return result;
    }
	
	------------------------------------------------------------------------------------
	//查询指定的某列 
    public Result getResult2(String tableName, String rowKey, String familyName, String columnName) throws Exception {
	
		HTable htable=new HTable(conf, Bytes.toBytes(tableName));
        Get get=new Get(Bytes.toBytes(rowKey));
        get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
        Result result=htable.get(get);
		
        for(KeyValue k:result.list()){
            System.out.println(Bytes.toString(k.getFamily()));
            System.out.println(Bytes.toString(k.getQualifier()));
            System.out.println(Bytes.toString(k.getValue()));
            System.out.println(k.getTimestamp());
        }
        return result;
    }
	
	------------------------------------------------------------------------------------
	//遍历查询表
    public ResultScanner getResultScann(String tableName) throws Exception {
     
        Scan scan=new Scan();
        ResultScanner rs =null;
        HTable htable=new HTable(conf, tableName);
		
        try{
            rs=htable.getScanner(scan);
            for(Result r: rs){
                for(KeyValue kv:r.list()){
                    System.out.println(Bytes.toString(kv.getRow()));
                    System.out.println(Bytes.toString(kv.getFamily()));
                    System.out.println(Bytes.toString(kv.getQualifier()));
                    System.out.println(Bytes.toString(kv.getValue()));
                    System.out.println(kv.getTimestamp());
                }
            }
        }finally{
            rs.close();
        }
        return rs;
    }
	
	------------------------------------------------------------------------------------
	//查询某列数据的某个版本
    public Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,
            int versions) throws Exception {
     
        HTable htable=new HTable(conf, tableName);
        Get get =new Get(Bytes.toBytes(rowKey));
        get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
        get.setMaxVersions(versions);
        Result result=htable.get(get);
         
        for(KeyValue kv: result.list()){
 
            System.out.println(Bytes.toString(kv.getFamily()));
            System.out.println(Bytes.toString(kv.getQualifier()));
            System.out.println(Bytes.toString(kv.getValue()));
            System.out.println(kv.getTimestamp());
             
        }
 
        return result;
    }
	
	------------------------------------------------------------------------------------
	//删除指定某列
    public void deleteColumn1(String tableName, String rowKey, String falilyName, String columnName) throws Exception {
 
        HTable htable=new HTable(conf, tableName);
      Delete delete1=new Delete(Bytes.toBytes(rowKey));
        Delete de =new Delete(Bytes.toBytes(rowKey));
        de.deleteColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));
        htable.delete(de);
    }
 
    ------------------------------------------------------------------------------------
    //删除指定的某个rowkey
    public void deleteColumn2(String tableName, String rowKey) throws Exception {
        HTable htable=new HTable(conf, tableName);
 
        Delete de =new Delete(Bytes.toBytes(rowKey));
         htable.delete(de);
         
    }
	
	------------------------------------------------------------------------------------
    //让该表失效
    public void disableTable(String tableName) throws Exception {
        HBaseAdmin admin=new HBaseAdmin(conf);
        admin.disableTable(tableName);
         
    }
	
	------------------------------------------------------------------------------------
    //删除表
    public void dropTable(String tableName) throws Exception {
         
        HBaseAdmin admin=new HBaseAdmin(conf);
        admin.disableTable(tableName);
        admin.deleteTable(tableName);
         
    }

 

JAVA API连接Hbase操作 新手小白,第一篇帖子是有关Hadoop下如何实现Java API连接Hbase,如有错误欢迎指正讨论。 一、安装jdk、eclipse并配置环境变量 (一)安装jdk 从Oracle官网下载对应版本JDK,下载后查看安装包。 根据教程将jdk解压到/usr/lib/jvm文件夹时发现,/hadoop/lib/jvm下为openjdk,大多数LINUX发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk,openjdk是jdk的开放原始码版本,以GPL协议的形式放出。 因此openjdk只 阅读详情

相关推荐

5分钟搞定Unity+Visual Studio开发环境配置(含C#游戏开发工作负载)

本文提供了一份详细的Unity与Visual Studio开发环境配置指南,帮助开发者在5分钟内完成C#游戏开发工作负载的设置。从Unity Hub安装到Visual Studio关键组件选择,再到常见问题排查,全面覆盖环境搭建的各个环节,显著提升游戏开发效率。

weixin_29014237的博客 249

Java 操作HBase

1.创建一个学生信息表,用来存储学生的姓名(姓名作为行键,且假设姓名不会重复)以及考试成绩,其中考试成绩(score)是一个列族,存储了各个科目的考试成绩。HTableDescriptor包含了HBase中的表格的详细信息(例如表中的列族、表的类型、表是否只读、MemoStore的最大空间、Region分裂时机等)管理HBase数据库信息(包括创建、删除表、列出表项、使表有效/无效、添加/删除表的列族成员、检查HBase运行状态等)2.针对表的操作(创建表、删除表、判断表是否存在、使用/禁用表、列出表)

qq_42260493的博客 8482

Innovus Function ECO实战:5步搞定数字后端设计中的网表修正(含Calibre LVS验证技巧)

本文提供了一份完整的Innovus Function ECO实战指南,详细解析了数字后端设计中网表修正的五步流程。从理解Function ECO概念、准备关键文件,到在Innovus中执行逻辑比对、自动布线及GUI检查,并重点攻克了ECO后Calibre LVS验证的难点与调试技巧,帮助工程师高效、精准地完成流片前的设计微调。

day7的博客 951

使用Java对HBase进行操作(一)

这里不再使用HBase命令行对表进行操作,而是通过Java API接口对HBase进行处理,包括对表的增删改查操作 一、判断表是否存在 设置配置信息 Configuration cfg = HBaseConfiguration.create(); cfg.set("hbase.zookeeper.quorum", "centos01"); cfg.set("hbase.zookeeper.property.clientPort", "2181"); 根据配置信息取得与数据库的连接 Conne...

YKQCC的博客 7223

Linux下Catapro酶动力学预测工具保姆级安装指南(PyTorch+CUDA11.8适配版)

本文提供了Linux系统下Catapro酶动力学预测工具的详细安装指南,特别适配PyTorch+CUDA11.8环境。从环境准备、源码获取到虚拟环境创建、依赖包安装和模型配置,逐步指导用户完成安装流程,并包含常见问题排查和性能优化建议,帮助研究者快速部署这一高效酶动力学参数预测工具。

weixin_29278805的博客 213

C#与数据采集卡集成开发全指南:从硬件连接到实时数据处理(附工业传感器监测实战)

C#数据采集卡集成开发指南 本文系统介绍了不同类型数据采集卡(DAQ卡)与C#的集成方法。主要内容包括: 数据采集卡分类:按接口分为PCIe/PCI(高带宽低延迟)、USB(便携即插即用)和以太网(远距离组网);按信号类型分为模拟量输入、数字量输入/输出等。 C#集成核心方法: 优先使用厂商SDK(如NI DAQmx),提供完整功能封装 无SDK时采用通用协议(如USB HID、Modbus TCP) 具体实现示例: NI DAQmx采集热电偶温度代码 USB HID协议读取模拟量电压值 工业应用要点:实时

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1975

Java 操作 hbase

本文介绍了如何使用Java客户端操作HBase,主要包括:1.引入hbase-client依赖;2.获取HBase连接的方法;3.命名空间操作,包括创建命名空间、查看所有命名空间和查看指定命名空间。代码示例展示了如何通过ConnectionFactory建立连接,使用Admin接口管理命名空间,以及NamespaceDescriptor的操作方法。

纯洁的小魔鬼 5592

MIT液态神经网络(LNN)深度研究:原理、应用与未来

液态神经网络(Liquid Neural Networks, LNNs)代表了人工智能领域,特别是神经网络架构设计中的一次范式转移。它从根本上挑战了传统深度学习模型依赖大规模参数和静态架构的惯例,转而寻求一种更为动态、高效且受生物神经系统启发的计算范式。LNN的核心创新在于其将神经网络的计算过程从离散的、基于时间步的更新,转变为连续的、由微分方程驱动的动态系统演化。这种转变不仅赋予了模型前所未有的适应性和鲁棒性,还使其在处理复杂的时序数据和因果推断任务时表现出色。本章节将深入剖析LNN的技术原理,从其核心的

步子哥的博客 2591

最新java操作HBase,别再说自己不会了

切莫死记硬背,小心面试官直接让你出门右拐1000道互联网Java面试题:

2401_84007049的博客 1262

27930-2015+充电协议解析

对2015+充电与2015充电进行硬件电路对比、通信协议对比和2015+通信协议解析。

manjixingkong1234的专栏 240

手把手教你学Simulink——基于矢量控制(FOC)的电机场景实例:电动汽车用PMSM FOC驱动系统仿真

永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)因其高效率、高功率密度和良好的动态响应特性,在电动汽车驱动系统中得到了广泛应用。为了实现高性能的速度和转矩控制,通常采用磁场定向控制(Field Oriented Control, FOC),也称为矢量控制。FOC通过将三相定子电流解耦为直轴(d轴)和交轴(q轴)分量,实现对电机转矩和磁链的独立控制,从而提升系统效率与动态性能。PMSM建模Clarke/Park变换与解耦控制。

MHD0815的博客 216

HBase的Java API操作

HBase的Java API操作代码,实现增删改查,过滤功能

qq_40078490的博客 2764

群无人机航迹规划-虚拟管道

图源北理工全权老师团队虚拟管道相关论文,文字为个人理解,以ppt形式分享报告。

coldmood77的博客 669

Hbase Java API操作

Hbase Java API操作,对于创建项目和操作表,表数据的方法

m0_72168501的博客 3227

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HBase JAVA API

HBase JAVA API实验过程

qq_45973433的博客 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HBase Java常用API

HBase Java常用API 常用API hbase类 功能 org.apache.hadoop.hbase.HBaseConfiguration HBase配置信息。默认的构造方法会尝试从hbase-default.xml和hbase-site.xml中读取配置。 org.apache.hadoop.hbase.client.HBaseAdmin 提供了一个接口来管理HBa...

池边的树的博客 315

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Hbase API以及java如何操作Hbase的说明

1.文章目的 本文主要包括两个方面的内容,一是Hbase Java API简介;二是一个完整的Java项目访问Hbase的步骤及示例代码。 本文档假设读者已在VMware上安装centOS虚拟机,并且已成功安装配置好Hadoop伪集群和Hbase数据库 2.Hbase的javaAPI简介 2.1几个相关类与HBase数据模型之间的对应关系 3.重点类介绍 3.1.HBaseConfigurati...

zhangbinch的博客 1291

api 原生hbase_如何使用Java API读写Hbase

展开全部一般情况下,我们使用Linux的shell命令,就可以非62616964757a686964616fe4b893e5b19e31333363373832常轻松的操作Hbase,例如一些建表,建列簇,插值,显示所有表,统计数量等等,但有时为了提高灵活性,我们也需要使用编程语言来操作Hbase,当然Hbase通过Thrift接口提供了对大多数主流编程语言的支持,例如C++,PHP,Python...

weixin_39774445的博客 181

Java API操作 HBase

导入数据问题 Rowkey问题 Java API操作HBase Ref: HBase Java API之TableDescriptorBuilder,ColumnDescriptorBuilder创建表、列族_追梦*小生的博客-优快云博客 JAVA连接HBase客户端及HBase写入数据和读取数据原理解析_菜鸟周星星的博客-优快云博客 浅谈HBase的数据分布 - 知乎 Hbase API以及java如何操作Hbase的说明_Uncle_Mo的博客-优快云博客_hbase j

noobiee的博客 4607

java api操作hbase_如何使用Java API操作Hbase

先导入hbase的相关jar包。e68a84e8a2ad3231313335323631343130323136353331333337383339再根据api进行操作。packagecom.util;importjava.io.IOException;importjava.util.ArrayList;importjava.util.List;importorg.apache.hado...

weixin_34270668的博客 558

eclipse 实现 HBase java API

HBase Java API 核心类介绍、创建表

博樽 3041

HBase 的Java API

1.Configuration 在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息。这些信息通过Configuration对象来封装,可通过如下代码构建该对象         Configuration config=HBaseConfiguration.create(); 在调用HBaseConfiguration.create()方

willorfang的学习专栏 9085
上一篇: Hbase-indexer常用命令
下一篇: 【Docker学习总结】1.Docker简介
Rita楠神
博客等级 码龄9年 27粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值