`

(转载)hbase的基本操作

 
阅读更多

本文列举一些hbase的基本操作代码。 

Java代码  收藏代码
  1. package allen.studyhbase;  
  2.   
  3. import java.io.IOException;  
  4. import java.util.LinkedList;  
  5. import java.util.List;  
  6.   
  7. import org.apache.commons.logging.Log;  
  8. import org.apache.commons.logging.LogFactory;  
  9. import org.apache.hadoop.hbase.HColumnDescriptor;  
  10. import org.apache.hadoop.hbase.HTableDescriptor;  
  11. import org.apache.hadoop.hbase.client.Delete;  
  12. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  13. import org.apache.hadoop.hbase.client.HTableInterface;  
  14. import org.apache.hadoop.hbase.client.HTablePool;  
  15. import org.apache.hadoop.hbase.client.Put;  
  16. import org.apache.hadoop.hbase.client.Result;  
  17. import org.apache.hadoop.hbase.client.ResultScanner;  
  18. import org.apache.hadoop.hbase.client.Scan;  
  19. import org.apache.hadoop.hbase.util.Bytes;  
  20. import org.junit.After;  
  21. import org.junit.AfterClass;  
  22. import org.junit.Before;  
  23. import org.junit.BeforeClass;  
  24.   
  25. public class BaseTest {  
  26.     protected static Log log = LogFactory.getLog(BaseTest.class);  
  27.   
  28.     protected static HBaseAdmin hbaseAdmin;  
  29.     protected static HTablePool pool;  
  30.     protected static String TableName = "allen_test";  
  31.     protected static byte[] TableNameBytes = Bytes.toBytes(TableName);  
  32.     protected static byte[] ColumnFamilyName = Bytes.toBytes("cf");  
  33.   
  34.     protected static String QNameStr1 = "q1";  
  35.     protected static String QNameStr2 = "q2";  
  36.     protected static String QNameStr3 = "q3";  
  37.   
  38.     protected static byte[] QName1 = Bytes.toBytes(QNameStr1);  
  39.     protected static byte[] QName2 = Bytes.toBytes(QNameStr2);  
  40.     protected static byte[] QName3 = Bytes.toBytes(QNameStr3);  
  41.   
  42.     protected HTableInterface table;  
  43.   
  44.     @BeforeClass  
  45.     public static void beforeClass() throws Exception {  
  46.         hbaseAdmin = CommonConfig.getHBaseAdmin();  
  47.         deleteTable();  
  48.         createTable();  
  49.     }  
  50.   
  51.     @AfterClass  
  52.     public static void afterClass() throws Exception {  
  53.         deleteTable();  
  54.     }  
  55.   
  56.     @Before  
  57.     public void before() throws Throwable {  
  58.         pool = CommonConfig.getHTablePool();  
  59.         table = pool.getTable(TableName);  
  60.         fillData();  
  61.     }  
  62.   
  63.     @After  
  64.     public void after() throws Exception {  
  65.         try {  
  66.             // full scan.  
  67.             Scan scan = new Scan();  
  68.             ResultScanner resultScanner = table.getScanner(scan);  
  69.   
  70.             List<byte[]> rows = new LinkedList<byte[]>();  
  71.             for (Result result = resultScanner.next(); result != null; result = resultScanner  
  72.                     .next()) {  
  73.                 rows.add(result.getRow());  
  74.             }  
  75.   
  76.             for (byte[] row : rows) {  
  77.                 table.delete(new Delete(row));  
  78.                 log.info("delete " + Bytes.toString(row));  
  79.             }  
  80.   
  81.             // return table to pool.  
  82.             table.close();  
  83.   
  84.         } catch (IOException e) {  
  85.             throw new RuntimeException(e);  
  86.         }  
  87.     }  
  88.   
  89.     private static void createTable() throws Exception {  
  90.         // create new table.  
  91.         HTableDescriptor tableDescriptor = new HTableDescriptor(TableName);  
  92.         tableDescriptor.addFamily(new HColumnDescriptor(ColumnFamilyName));  
  93.         hbaseAdmin.createTable(tableDescriptor);  
  94.     }  
  95.   
  96.     private static void deleteTable() throws Exception {  
  97.         // delete table if table exist.  
  98.         if (hbaseAdmin.tableExists(TableName)) {  
  99.             // disable table before delete it.  
  100.             hbaseAdmin.disableTable(TableName);  
  101.             hbaseAdmin.deleteTable(TableName);  
  102.         }  
  103.     }  
  104.   
  105.     String rowKeyStr1 = "allen_test_row1";  
  106.     String rowKeyStr2 = "allen_test_row2";  
  107.     String rowKeyStr3 = "allen_test_row3";  
  108.     String rowKeyStr4 = "allen_test_row4";  
  109.   
  110.     byte[] rowKey1 = Bytes.toBytes(rowKeyStr1);  
  111.     byte[] rowKey2 = Bytes.toBytes(rowKeyStr2);  
  112.     byte[] rowKey3 = Bytes.toBytes(rowKeyStr3);  
  113.     byte[] rowKey4 = Bytes.toBytes(rowKeyStr4);  
  114.   
  115.     private void fillData() throws Throwable {  
  116.   
  117.         Put put = new Put(rowKey1);  
  118.         put.add(ColumnFamilyName, QName1, Bytes.toBytes(100L));  
  119.         put.add(ColumnFamilyName, QName2, Bytes.toBytes(100L));  
  120.         table.put(put);  
  121.   
  122.         put = new Put(rowKey2);  
  123.         put.add(ColumnFamilyName, QName1, Bytes.toBytes(20L));  
  124.         put.add(ColumnFamilyName, QName2, Bytes.toBytes(200L));  
  125.         table.put(put);  
  126.   
  127.         // set null case.  
  128.         put = new Put(rowKey3);  
  129.         put.add(ColumnFamilyName, QName1, null);  
  130.         put.add(ColumnFamilyName, QName2, null);  
  131.         table.put(put);  
  132.   
  133.         // empty case.  
  134.         put = new Put(rowKey4);  
  135.         put.add(ColumnFamilyName, QName3, Bytes.toBytes("test"));  
  136.         table.put(put);  
  137.     }  
  138.   
  139. }  

 

Java代码  收藏代码
  1. package allen.studyhbase;  
  2.   
  3.   
  4.   
  5. import org.apache.hadoop.conf.Configuration;  
  6.   
  7. import org.apache.hadoop.hbase.HBaseConfiguration;  
  8.   
  9. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  10.   
  11. import org.apache.hadoop.hbase.client.HTablePool;  
  12.   
  13.   
  14.   
  15. /** 
  16.  
  17.  * CommonConfig. 
  18.  
  19.  * */  
  20.   
  21. public class CommonConfig {  
  22.   
  23.   
  24.   
  25.     private static HTablePool pool;  
  26.   
  27.     private static HBaseAdmin hbaseAdmin;  
  28.   
  29.     private static Configuration conf;  
  30.   
  31.   
  32.   
  33.     static {  
  34.   
  35.         try {  
  36.   
  37.             conf = HBaseConfiguration.create();  
  38.   
  39.             pool = new HTablePool(conf, 50);  
  40.   
  41.             hbaseAdmin = new HBaseAdmin(conf);  
  42.   
  43.         } catch (Exception e) {  
  44.   
  45.             throw new RuntimeException(e);  
  46.   
  47.         }  
  48.   
  49.     };  
  50.   
  51.   
  52.   
  53.     public static Configuration getConfiguration() {  
  54.   
  55.         return conf;  
  56.   
  57.     }  
  58.   
  59.   
  60.   
  61.     public static HBaseAdmin getHBaseAdmin() {  
  62.   
  63.         return hbaseAdmin;  
  64.   
  65.     }  
  66.   
  67.   
  68.   
  69.     public static HTablePool getHTablePool() {  
  70.   
  71.         return pool;  
  72.   
  73.     }  
  74.   
  75. }  

 

Java代码  收藏代码
  1. package allen.studyhbase;  
  2.   
  3. import java.util.HashSet;  
  4. import java.util.Set;  
  5.   
  6. import org.apache.hadoop.hbase.client.Delete;  
  7. import org.apache.hadoop.hbase.client.Get;  
  8.   
  9. import org.apache.hadoop.hbase.client.Put;  
  10. import org.apache.hadoop.hbase.client.Result;  
  11. import org.apache.hadoop.hbase.client.ResultScanner;  
  12. import org.apache.hadoop.hbase.client.Scan;  
  13.   
  14. import org.apache.hadoop.hbase.util.Bytes;  
  15.   
  16. import org.junit.Assert;  
  17.   
  18. import org.junit.Test;  
  19.   
  20. public class TestHbaseOp extends BaseTest {  
  21.   
  22.     @Test  
  23.     public void testDelete() throws Exception {  
  24.   
  25.         Get get = new Get(rowKey1);  
  26.         Result result = table.get(get);  
  27.         Assert.assertTrue(!result.isEmpty());  
  28.   
  29.         Delete delete = new Delete(rowKey1);  
  30.         table.delete(delete);  
  31.   
  32.         get = new Get(rowKey1);  
  33.         result = table.get(get);  
  34.         Assert.assertTrue(result.isEmpty());  
  35.   
  36.     }  
  37.   
  38.     @Test  
  39.     public void testDeleteNotExistRow() throws Exception {  
  40.         byte[] rowKey = Bytes.toBytes("allen_test_row");  
  41.         Delete delete = new Delete(rowKey);  
  42.         table.delete(delete);  
  43.     }  
  44.   
  45.     @Test  
  46.     public void testScan_01() throws Exception {  
  47.   
  48.         Set<String> resultRowKeys = new HashSet<String>();  
  49.         Scan scan = new Scan(rowKey1, rowKey2);  
  50.         ResultScanner resultScanner = table.getScanner(scan);  
  51.         for (Result result = resultScanner.next(); result != null; result = resultScanner  
  52.                 .next()) {  
  53.             resultRowKeys.add(Bytes.toString(result.getRow()));  
  54.         }  
  55.   
  56.         Assert.assertTrue(resultRowKeys.size() == 1);  
  57.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));  
  58.     }  
  59.   
  60.     @Test  
  61.     public void testScan_02() throws Exception {  
  62.         Set<String> resultRowKeys = new HashSet<String>();  
  63.   
  64.         Scan scan = new Scan(rowKey1);  
  65.         ResultScanner resultScanner = table.getScanner(scan);  
  66.         for (Result result = resultScanner.next(); result != null; result = resultScanner  
  67.                 .next()) {  
  68.             resultRowKeys.add(Bytes.toString(result.getRow()));  
  69.         }  
  70.   
  71.         Assert.assertTrue(resultRowKeys.size() == 4);  
  72.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));  
  73.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr2));  
  74.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr3));  
  75.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr4));  
  76.     }  
  77.   
  78.     @Test  
  79.     public void testScan_03() throws Exception {  
  80.         Set<String> resultRowKeys = new HashSet<String>();  
  81.   
  82.         Scan scan = new Scan(rowKey1);  
  83.         scan.addColumn(ColumnFamilyName, QName1);  
  84.         ResultScanner resultScanner = table.getScanner(scan);  
  85.         for (Result result = resultScanner.next(); result != null; result = resultScanner  
  86.                 .next()) {  
  87.             resultRowKeys.add(Bytes.toString(result.getRow()));  
  88.         }  
  89.   
  90.         Assert.assertTrue(resultRowKeys.size() == 3);  
  91.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));  
  92.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr2));  
  93.         Assert.assertTrue(resultRowKeys.contains(rowKeyStr3));  
  94.   
  95.     }  
  96.   
  97.     @Test  
  98.     public void testCheckAndPut() throws Exception {  
  99.         byte[] rowKey = Bytes.toBytes("allen_test_row");  
  100.         Put put = new Put(rowKey);  
  101.         put.add(ColumnFamilyName, QName1, Bytes.toBytes("a"));  
  102.         put.add(ColumnFamilyName, QName2, Bytes.toBytes("b"));  
  103.   
  104.         boolean result = false;  
  105.   
  106.         result = table.checkAndPut(rowKey, ColumnFamilyName, QName2,  
  107.                 Bytes.toBytes("b"), put);  
  108.         // check fail, put fail.  
  109.         Assert.assertFalse(result);  
  110.   
  111.         result = table.checkAndPut(rowKey, ColumnFamilyName, QName2, null, put);  
  112.         // check ok, put ok.  
  113.         Assert.assertTrue(result);  
  114.   
  115.         result = table.checkAndPut(rowKey, ColumnFamilyName, QName2, null, put);  
  116.         // check fail, put fail.  
  117.         Assert.assertFalse(result);  
  118.   
  119.         result = table.checkAndPut(rowKey, ColumnFamilyName, QName2,  
  120.                 Bytes.toBytes("b"), put);  
  121.         // check ok, put ok.  
  122.         Assert.assertTrue(result);  
  123.     }  
  124.   
  125.     @Test  
  126.     public void testPutAndGet() throws Exception {  
  127.         byte[] rowKey = Bytes.toBytes("allen_test_row");  
  128.         Put put = new Put(rowKey);  
  129.         put.add(ColumnFamilyName, QName1, Bytes.toBytes("a"));  
  130.         put.add(ColumnFamilyName, QName3, null);  
  131.         table.put(put);  
  132.   
  133.         Get get = new Get(rowKey);  
  134.         Result result = table.get(get);  
  135.   
  136.         byte[] q1 = result.getValue(ColumnFamilyName, QName1);  
  137.         byte[] q2 = result.getValue(ColumnFamilyName, QName2);  
  138.         byte[] q3 = result.getValue(ColumnFamilyName, QName3);  
  139.   
  140.         Assert.assertEquals("a", Bytes.toString(q1));  
  141.         // we get null byte array here.  
  142.         Assert.assertEquals(null, Bytes.toString(q2));  
  143.         // we get empty byte array here. not a null.  
  144.         Assert.assertEquals("", Bytes.toString(q3));  
  145.   
  146.         // get a row doesn't exist.  
  147.         byte[] rowKey2 = Bytes.toBytes("allen_test_row_not_exist");  
  148.         get = new Get(rowKey2);  
  149.         result = table.get(get);  
  150.         Assert.assertTrue(result.isEmpty());  
  151.     }  
  152.   
  153.     @Test  
  154.     public void testPutWithoutColumn() throws Exception {  
  155.         byte[] rowKey = Bytes.toBytes("allen_test_row");  
  156.         Put put = new Put(rowKey);  
  157.         try {  
  158.             table.put(put);  
  159.             Assert.fail();  
  160.         } catch (IllegalArgumentException e) {  
  161.             // ignore.  
  162.         }  
  163.     }  
  164. }  
分享到:
评论

相关推荐

    HBase基本操作 Java代码

    HBase基本操作 增删改查 java代码 要使用须导入对应的jar包

    HbaseTemplate 操作hbase

    总之,Spring Data Hadoop的HbaseTemplate为Java开发者提供了一种简洁且强大的方式来操作HBase,通过其丰富的API可以轻松实现各种HBase操作。在实际项目中,结合Spring的依赖注入和配置管理,能够有效地提升代码的可...

    HBase基本操作.pdf

    ### HBase Shell命令基本操作步骤 #### 1. 启动HBase Shell 首先需要确保HBase服务已启动。在命令行输入`hbase shell`,按回车键进入HBase Shell环境。 #### 2. 查看帮助文档 在HBase Shell中,使用`help`命令可以...

    Hbase 基本操作类

    Hbase 基本操作类 static { //此处可以使用hbase的配置文件,也可以通过代码来实例化hbase连接 /* * Configuration HBASE_CONFIG = new Configuration(); * HBASE_CONFIG.set("hbase.zookeeper.quorum", ...

    Hbase的安装过程及基本操作

    在本文中,我们将详细讲解Hbase的安装过程以及基本操作,特别针对在Linux环境下使用清华大学镜像进行下载的情况。Hbase是一个分布式的、面向列的数据库,常用于大数据存储,是Apache Hadoop生态系统的一部分。以下是...

    Hbase 的shell基本操作

    下面是基于标题“Hbase的shell基本操作”和描述“hadoop集群环境下hbase的shell基本操作命令”,结合给定的部分内容,所生成的详细知识点: 1. 进入HBase命令行: 通过命令`hbase shell`可以进入HBase的命令行界面...

    Hbase 安装与基本使用

    **四、HBase基本操作** 1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '...

    hbase的shell操作

    根据提供的文件信息,本文将详细介绍HBase的Shell操作及其应用场景,包括如何创建表、插入数据、查询数据等关键操作。 ### HBase Shell简介 HBase Shell是HBase提供的一种交互式命令行工具,用于执行HBase操作。它...

    分布式存储系统:HBase:HBase基本操作与Shell命令.docx

    分布式存储系统:HBase:HBase基本操作与Shell命令.docx

    实验三:熟悉常用的HBase操作

    实验的目标是让你理解HBase在Hadoop架构中的地位,以及掌握通过Shell命令和Java API进行基本操作的方法。 首先,让我们来看看实验的平台配置。实验要求的操作系统是Linux,这通常是大数据处理的首选平台,因为它...

    HBase基本数据操作详解.docx

    ### HBase基本数据操作详解 #### 一、命名空间 Namespace **1.1 命名空间概述** 在HBase中,命名空间(namespace)的概念类似于传统数据库中的模式(schema),它提供了一种对表进行逻辑分组的方式。这种分组不仅有助...

    Hadoop原理与技术Hbase的基本操作

    上机实操,熟悉指令操作Hbase和java代码操作Hbase 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 1:指令操作Hbase (1):start-all.sh,启动所有进程 (2):start-hbase.sh...

    hbase shell操作指南

    以上是HBase Shell操作的基本知识点,通过这些知识点,用户可以在HBase Shell环境下方便地进行数据管理任务。需要注意的是,在实际操作过程中,应根据具体的HBase集群配置和需求进行相应的调整。

    大数据开发之Hbase基本使用及存储设计实战教程(视频+笔记+代码)

    │ Day15[Hbase 基本使用及存储设计].pdf │ ├─02_视频 │ Day1501_Hbase的介绍及其发展.mp4 │ Day1502_Hbase中的特殊概念.mp4 │ Day1503_Hbase与MYSQL的存储比较.mp4 │ Day1504_Hbase部署环境准备.mp4 │ Day...

    hbase的操作数据demo

    总之,"hbase的操作数据demo"这个压缩包可能包含了一些实用的脚本或代码示例,用于演示HBase的基本操作,包括查询、获取和删除数据。通过学习这些示例,开发者可以更好地理解和掌握HBase的数据模型和操作方法,为...

    Hbase基本用法简介

    Hbase shell 、Hbase api、Hbase 配置

    HBase 基本原理

    HBase 基本原理,出版于 2014,HBase is a NoSQL database that primarily works on top of Hadoop. HBase is based on the storage architecture followed by the BigTable. HBase inherits the storage design ...

    HBASE具体操作指令

    HBase具体操作指令 HBase是一个基于Hadoop的分布式Nosql数据库,提供了多种操作指令来管理和维护数据库。下面将对HBase shell commands进行分类和详细解释。 一、General HBase shell commands 1. status:显示...

    大数据技术原理及应用课实验3 熟悉常用的HBase操作 林子雨实验

    通过这个实验,参与者深入理解了HBase如何在Hadoop架构中协同工作,掌握了HBase Shell命令的基本操作,并学会了使用Java API进行高级数据操作。这对于理解和应用大数据处理技术,尤其是在实时数据存储和分析场景中,...

    Hbase基本知识介绍

    ### HBase基本知识介绍 #### 一、HBase概述 HBase是Apache Hadoop生态系统中的一个重要的组件,它提供了一种分布式、可扩展的大规模数据存储解决方案。HBase基于Google Bigtable论文设计,并且利用Hadoop HDFS作为...

Global site tag (gtag.js) - Google Analytics