千家信息网

HBase如何进行编程

发表于:2024-11-16 作者:千家信息网编辑
千家信息网最后更新 2024年11月16日,这篇文章主要介绍了HBase如何进行编程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、使用Eclipse开发HBase应用程序1,
千家信息网最后更新 2024年11月16日HBase如何进行编程

这篇文章主要介绍了HBase如何进行编程,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、使用Eclipse开发HBase应用程序

1,在Eclipse中新建一个Java Project,命名为HBaseTest,然后右键Properties中选择Java Build Path,选择Add External Jars,将HBase/lib目录下的jar包导入进来。

2,在工程根目录下创建Conf文件夹,将HBase/Conf下的hbase-site.xml文件复制到该文件夹中,通过右键选择Properties->Java BuildPath->Libraries->Add Class Folder,然后选择Conf文件夹即可。

二、简要介绍HBaseJava API

1, HbaseConfiguration

关系:org.apache.hadoop.hbase.HBaseConfiguration

作用:通过此类可以对HBase进行配置

2, HBaseAdmin

关系:org.apache.hadoop.hbase.client.HBaseAdmin

作用:提供一个接口来管理HBase数据库中的表信息。它提供创建表、删除表等方法。

3, HTableDescriptor

关系:org.apache.hadoop.hbase.client.HTableDescriptor

作用:包含了表的名字及其对应列族。 提供的方法有

void addFamily(HColumnDescriptor) 添加一个列族

HColumnDescriptor removeFamily(byte[] column) 移除一个列族

byte[] getName() 获取表的名字

byte[] getValue(byte[] key) 获取属性的值

void setValue(String key,Stringvalue) 设置属性的值

4, HColumnDescriptor

关系:org.apache.hadoop.hbase.client.HColumnDescriptor

作用:维护关于列的信息。提供的方法有

byte[] getName() 获取列族的名字

byte[] getValue() 获取对应的属性的值

void setValue(String key,String value)设置对应属性的值

5, HTable

关系:org.apache.hadoop.hbase.client.HTable

作用:用户与HBase表进行通信。此方法对于更新操作来说是非线程安全的,如果启动多个线程尝试与单个HTable实例进行通信,那么写缓冲器可能会崩溃。

6, Put

关系:org.apache.hadoop.hbase.client.Put

作用:用于对单个行执行添加操作

7, Get

关系:org.apache.hadoop.hbase.client.Get

作用:用于获取单个行的相关信息

8, Result

关系:org.apache.hadoop.hbase.client.Result

作用:存储Get或Scan操作后获取的单行值。

9, ResultScanner

关系:Interface

作用:客户端获取值的接口。

三、 HBase Java API简单实例

import java.io.IOException;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.client.HBaseAdmin;import org.apache.hadoop.hbase.client.HTable;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Get;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;/* * @author minglaihan */public class HBaseTest {                static Configuration cfg = HBaseConfiguration.create();                //通过HBaseAdmin HTableDescriptor来创建一个新表        public static void create(String tableName, String columnFamily) throws Exception{                HBaseAdmin admin = new HBaseAdmin(cfg);                if(admin.tableExists(tableName)){                        System.out.println("Table exist");                        System.exit(0);                }                else {                        HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);                        tableDescriptor.addFamily(new HColumnDescriptor(columnFamily));                        admin.createTable(tableDescriptor);                        System.out.println("Table create success");                }        }                //添加一条数据,通过HTable Put为已存在的表添加数据        public static void put(String tableName,String row,String columnFamily,String column,String data) throws IOException{                HTable table = new HTable(cfg, tableName);                Put put = new Put(Bytes.toBytes(row));                put.add(Bytes.toBytes(columnFamily),Bytes.toBytes(column),Bytes.toBytes(data));                table.put(put);                System.out.println("put success");        }                //获取tableName表里列为row的结果集        public static void get(String tableName,String row) throws IOException{                HTable table = new HTable(cfg, tableName);                Get get = new Get(Bytes.toBytes(row));                Result result = table.get(get);                System.out.println("get "+ result);         }                //通过HTable Scan来获取tableName表的所有数据信息        public static void scan (String tableName) throws IOException{                HTable table = new HTable(cfg, tableName);                Scan scan = new Scan();                ResultScanner resultScanner = table.getScanner(scan);                for(Result s:resultScanner){                        System.out.println("Scan "+ resultScanner);                }        }                public static boolean delete(String tableName) throws Exception{                HBaseAdmin admin = new HBaseAdmin(cfg);                if(admin.tableExists(tableName)){                        try {                                admin.disableTable(tableName);                                admin.deleteTable(tableName);                        } catch (Exception e) {                                // TODO: handle exception                                e.printStackTrace();                                return false;                        }                }                return true;        }                public static void main(String[] args) {                String tableName = "hbase_test";                String columnFamily = "c1";                                try {                        HBaseTest.create(tableName, columnFamily);                        HBaseTest.put(tableName, "row1", columnFamily, "column1", "data1");                        HBaseTest.get(tableName, "row1");                        HBaseTest.scan(tableName);                        if(HBaseTest.delete(tableName)==true){                                System.out.println("delete table "+ tableName+"success");                        }                                        } catch (Exception e) {                        // TODO: handle exception                        e.printStackTrace();                }        }}

将Delete的步骤注释掉的运行结果截图:


感谢你能够认真阅读完这篇文章,希望小编分享的"HBase如何进行编程"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0