本文列举一些hbase的基本操作代码。
- package allen.studyhbase;
- import java.io.IOException;
- import java.util.LinkedList;
- import java.util.List;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.apache.hadoop.hbase.HColumnDescriptor;
- import org.apache.hadoop.hbase.HTableDescriptor;
- import org.apache.hadoop.hbase.client.Delete;
- import org.apache.hadoop.hbase.client.HBaseAdmin;
- import org.apache.hadoop.hbase.client.HTableInterface;
- import org.apache.hadoop.hbase.client.HTablePool;
- 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;
- import org.junit.After;
- import org.junit.AfterClass;
- import org.junit.Before;
- import org.junit.BeforeClass;
- public class BaseTest {
- protected static Log log = LogFactory.getLog(BaseTest.class);
- protected static HBaseAdmin hbaseAdmin;
- protected static HTablePool pool;
- protected static String TableName = "allen_test";
- protected static byte[] TableNameBytes = Bytes.toBytes(TableName);
- protected static byte[] ColumnFamilyName = Bytes.toBytes("cf");
- protected static String QNameStr1 = "q1";
- protected static String QNameStr2 = "q2";
- protected static String QNameStr3 = "q3";
- protected static byte[] QName1 = Bytes.toBytes(QNameStr1);
- protected static byte[] QName2 = Bytes.toBytes(QNameStr2);
- protected static byte[] QName3 = Bytes.toBytes(QNameStr3);
- protected HTableInterface table;
- @BeforeClass
- public static void beforeClass() throws Exception {
- hbaseAdmin = CommonConfig.getHBaseAdmin();
- deleteTable();
- createTable();
- }
- @AfterClass
- public static void afterClass() throws Exception {
- deleteTable();
- }
- @Before
- public void before() throws Throwable {
- pool = CommonConfig.getHTablePool();
- table = pool.getTable(TableName);
- fillData();
- }
- @After
- public void after() throws Exception {
- try {
- // full scan.
- Scan scan = new Scan();
- ResultScanner resultScanner = table.getScanner(scan);
- List<byte[]> rows = new LinkedList<byte[]>();
- for (Result result = resultScanner.next(); result != null; result = resultScanner
- .next()) {
- rows.add(result.getRow());
- }
- for (byte[] row : rows) {
- table.delete(new Delete(row));
- log.info("delete " + Bytes.toString(row));
- }
- // return table to pool.
- table.close();
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- private static void createTable() throws Exception {
- // create new table.
- HTableDescriptor tableDescriptor = new HTableDescriptor(TableName);
- tableDescriptor.addFamily(new HColumnDescriptor(ColumnFamilyName));
- hbaseAdmin.createTable(tableDescriptor);
- }
- private static void deleteTable() throws Exception {
- // delete table if table exist.
- if (hbaseAdmin.tableExists(TableName)) {
- // disable table before delete it.
- hbaseAdmin.disableTable(TableName);
- hbaseAdmin.deleteTable(TableName);
- }
- }
- String rowKeyStr1 = "allen_test_row1";
- String rowKeyStr2 = "allen_test_row2";
- String rowKeyStr3 = "allen_test_row3";
- String rowKeyStr4 = "allen_test_row4";
- byte[] rowKey1 = Bytes.toBytes(rowKeyStr1);
- byte[] rowKey2 = Bytes.toBytes(rowKeyStr2);
- byte[] rowKey3 = Bytes.toBytes(rowKeyStr3);
- byte[] rowKey4 = Bytes.toBytes(rowKeyStr4);
- private void fillData() throws Throwable {
- Put put = new Put(rowKey1);
- put.add(ColumnFamilyName, QName1, Bytes.toBytes(100L));
- put.add(ColumnFamilyName, QName2, Bytes.toBytes(100L));
- table.put(put);
- put = new Put(rowKey2);
- put.add(ColumnFamilyName, QName1, Bytes.toBytes(20L));
- put.add(ColumnFamilyName, QName2, Bytes.toBytes(200L));
- table.put(put);
- // set null case.
- put = new Put(rowKey3);
- put.add(ColumnFamilyName, QName1, null);
- put.add(ColumnFamilyName, QName2, null);
- table.put(put);
- // empty case.
- put = new Put(rowKey4);
- put.add(ColumnFamilyName, QName3, Bytes.toBytes("test"));
- table.put(put);
- }
- }
- package allen.studyhbase;
- import org.apache.hadoop.conf.Configuration;
- import org.apache.hadoop.hbase.HBaseConfiguration;
- import org.apache.hadoop.hbase.client.HBaseAdmin;
- import org.apache.hadoop.hbase.client.HTablePool;
- /**
- * CommonConfig.
- * */
- public class CommonConfig {
- private static HTablePool pool;
- private static HBaseAdmin hbaseAdmin;
- private static Configuration conf;
- static {
- try {
- conf = HBaseConfiguration.create();
- pool = new HTablePool(conf, 50);
- hbaseAdmin = new HBaseAdmin(conf);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- };
- public static Configuration getConfiguration() {
- return conf;
- }
- public static HBaseAdmin getHBaseAdmin() {
- return hbaseAdmin;
- }
- public static HTablePool getHTablePool() {
- return pool;
- }
- }
- package allen.studyhbase;
- import java.util.HashSet;
- import java.util.Set;
- import org.apache.hadoop.hbase.client.Delete;
- import org.apache.hadoop.hbase.client.Get;
- 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;
- import org.junit.Assert;
- import org.junit.Test;
- public class TestHbaseOp extends BaseTest {
- @Test
- public void testDelete() throws Exception {
- Get get = new Get(rowKey1);
- Result result = table.get(get);
- Assert.assertTrue(!result.isEmpty());
- Delete delete = new Delete(rowKey1);
- table.delete(delete);
- get = new Get(rowKey1);
- result = table.get(get);
- Assert.assertTrue(result.isEmpty());
- }
- @Test
- public void testDeleteNotExistRow() throws Exception {
- byte[] rowKey = Bytes.toBytes("allen_test_row");
- Delete delete = new Delete(rowKey);
- table.delete(delete);
- }
- @Test
- public void testScan_01() throws Exception {
- Set<String> resultRowKeys = new HashSet<String>();
- Scan scan = new Scan(rowKey1, rowKey2);
- ResultScanner resultScanner = table.getScanner(scan);
- for (Result result = resultScanner.next(); result != null; result = resultScanner
- .next()) {
- resultRowKeys.add(Bytes.toString(result.getRow()));
- }
- Assert.assertTrue(resultRowKeys.size() == 1);
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));
- }
- @Test
- public void testScan_02() throws Exception {
- Set<String> resultRowKeys = new HashSet<String>();
- Scan scan = new Scan(rowKey1);
- ResultScanner resultScanner = table.getScanner(scan);
- for (Result result = resultScanner.next(); result != null; result = resultScanner
- .next()) {
- resultRowKeys.add(Bytes.toString(result.getRow()));
- }
- Assert.assertTrue(resultRowKeys.size() == 4);
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr2));
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr3));
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr4));
- }
- @Test
- public void testScan_03() throws Exception {
- Set<String> resultRowKeys = new HashSet<String>();
- Scan scan = new Scan(rowKey1);
- scan.addColumn(ColumnFamilyName, QName1);
- ResultScanner resultScanner = table.getScanner(scan);
- for (Result result = resultScanner.next(); result != null; result = resultScanner
- .next()) {
- resultRowKeys.add(Bytes.toString(result.getRow()));
- }
- Assert.assertTrue(resultRowKeys.size() == 3);
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr1));
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr2));
- Assert.assertTrue(resultRowKeys.contains(rowKeyStr3));
- }
- @Test
- public void testCheckAndPut() throws Exception {
- byte[] rowKey = Bytes.toBytes("allen_test_row");
- Put put = new Put(rowKey);
- put.add(ColumnFamilyName, QName1, Bytes.toBytes("a"));
- put.add(ColumnFamilyName, QName2, Bytes.toBytes("b"));
- boolean result = false;
- result = table.checkAndPut(rowKey, ColumnFamilyName, QName2,
- Bytes.toBytes("b"), put);
- // check fail, put fail.
- Assert.assertFalse(result);
- result = table.checkAndPut(rowKey, ColumnFamilyName, QName2, null, put);
- // check ok, put ok.
- Assert.assertTrue(result);
- result = table.checkAndPut(rowKey, ColumnFamilyName, QName2, null, put);
- // check fail, put fail.
- Assert.assertFalse(result);
- result = table.checkAndPut(rowKey, ColumnFamilyName, QName2,
- Bytes.toBytes("b"), put);
- // check ok, put ok.
- Assert.assertTrue(result);
- }
- @Test
- public void testPutAndGet() throws Exception {
- byte[] rowKey = Bytes.toBytes("allen_test_row");
- Put put = new Put(rowKey);
- put.add(ColumnFamilyName, QName1, Bytes.toBytes("a"));
- put.add(ColumnFamilyName, QName3, null);
- table.put(put);
- Get get = new Get(rowKey);
- Result result = table.get(get);
- byte[] q1 = result.getValue(ColumnFamilyName, QName1);
- byte[] q2 = result.getValue(ColumnFamilyName, QName2);
- byte[] q3 = result.getValue(ColumnFamilyName, QName3);
- Assert.assertEquals("a", Bytes.toString(q1));
- // we get null byte array here.
- Assert.assertEquals(null, Bytes.toString(q2));
- // we get empty byte array here. not a null.
- Assert.assertEquals("", Bytes.toString(q3));
- // get a row doesn't exist.
- byte[] rowKey2 = Bytes.toBytes("allen_test_row_not_exist");
- get = new Get(rowKey2);
- result = table.get(get);
- Assert.assertTrue(result.isEmpty());
- }
- @Test
- public void testPutWithoutColumn() throws Exception {
- byte[] rowKey = Bytes.toBytes("allen_test_row");
- Put put = new Put(rowKey);
- try {
- table.put(put);
- Assert.fail();
- } catch (IllegalArgumentException e) {
- // ignore.
- }
- }
- }
相关推荐
HBase基本操作 增删改查 java代码 要使用须导入对应的jar包
总之,Spring Data Hadoop的HbaseTemplate为Java开发者提供了一种简洁且强大的方式来操作HBase,通过其丰富的API可以轻松实现各种HBase操作。在实际项目中,结合Spring的依赖注入和配置管理,能够有效地提升代码的可...
### HBase Shell命令基本操作步骤 #### 1. 启动HBase Shell 首先需要确保HBase服务已启动。在命令行输入`hbase shell`,按回车键进入HBase Shell环境。 #### 2. 查看帮助文档 在HBase Shell中,使用`help`命令可以...
Hbase 基本操作类 static { //此处可以使用hbase的配置文件,也可以通过代码来实例化hbase连接 /* * Configuration HBASE_CONFIG = new Configuration(); * HBASE_CONFIG.set("hbase.zookeeper.quorum", ...
在本文中,我们将详细讲解Hbase的安装过程以及基本操作,特别针对在Linux环境下使用清华大学镜像进行下载的情况。Hbase是一个分布式的、面向列的数据库,常用于大数据存储,是Apache Hadoop生态系统的一部分。以下是...
下面是基于标题“Hbase的shell基本操作”和描述“hadoop集群环境下hbase的shell基本操作命令”,结合给定的部分内容,所生成的详细知识点: 1. 进入HBase命令行: 通过命令`hbase shell`可以进入HBase的命令行界面...
**四、HBase基本操作** 1. **创建表**:使用HBase shell或Java API,通过`create '表名', '列族'`命令创建表,例如`create 'users', 'info'`创建名为users的表,列族为info。 2. **插入数据**:插入数据通过`put '...
根据提供的文件信息,本文将详细介绍HBase的Shell操作及其应用场景,包括如何创建表、插入数据、查询数据等关键操作。 ### HBase Shell简介 HBase Shell是HBase提供的一种交互式命令行工具,用于执行HBase操作。它...
分布式存储系统:HBase:HBase基本操作与Shell命令.docx
实验的目标是让你理解HBase在Hadoop架构中的地位,以及掌握通过Shell命令和Java API进行基本操作的方法。 首先,让我们来看看实验的平台配置。实验要求的操作系统是Linux,这通常是大数据处理的首选平台,因为它...
### HBase基本数据操作详解 #### 一、命名空间 Namespace **1.1 命名空间概述** 在HBase中,命名空间(namespace)的概念类似于传统数据库中的模式(schema),它提供了一种对表进行逻辑分组的方式。这种分组不仅有助...
上机实操,熟悉指令操作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集群配置和需求进行相应的调整。
│ Day15[Hbase 基本使用及存储设计].pdf │ ├─02_视频 │ Day1501_Hbase的介绍及其发展.mp4 │ Day1502_Hbase中的特殊概念.mp4 │ Day1503_Hbase与MYSQL的存储比较.mp4 │ Day1504_Hbase部署环境准备.mp4 │ Day...
总之,"hbase的操作数据demo"这个压缩包可能包含了一些实用的脚本或代码示例,用于演示HBase的基本操作,包括查询、获取和删除数据。通过学习这些示例,开发者可以更好地理解和掌握HBase的数据模型和操作方法,为...
Hbase shell 、Hbase api、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是一个基于Hadoop的分布式Nosql数据库,提供了多种操作指令来管理和维护数据库。下面将对HBase shell commands进行分类和详细解释。 一、General HBase shell commands 1. status:显示...
通过这个实验,参与者深入理解了HBase如何在Hadoop架构中协同工作,掌握了HBase Shell命令的基本操作,并学会了使用Java API进行高级数据操作。这对于理解和应用大数据处理技术,尤其是在实时数据存储和分析场景中,...
### HBase基本知识介绍 #### 一、HBase概述 HBase是Apache Hadoop生态系统中的一个重要的组件,它提供了一种分布式、可扩展的大规模数据存储解决方案。HBase基于Google Bigtable论文设计,并且利用Hadoop HDFS作为...