最近测试Hbase相关操作,发现网上例子都是到处复制,而且是旧版本的,在hbase1.x后很多函数,已经废弃或删除。下边是用新版hbase 测试的例子,供大家参考.
环境:
Hadoop2.5
hbase 1.1.4
package jyw.test; import java.io.IOException; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.ArrayList; 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.HColumnDescriptor; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; 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.client.Table; import org.apache.hadoop.hbase.filter.FilterList; import org.apache.hadoop.hbase.filter.PrefixFilter; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.filter.Filter; import org.apache.hadoop.hbase.filter.RowFilter; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.BinaryComparator; public class HBaseTableNewFunc { private static Connection conn=null; private static Configuration conf=null; public static synchronized void getConnect() throws IOException { conf=HBaseConfiguration.create(); conn =ConnectionFactory.createConnection(conf); // return conn; } public static void createTable(String tableName,String famName) throws IOException { Admin admin= conn.getAdmin(); if (admin.tableExists(TableName.valueOf(tableName))) { System.out.println("table Exists!"); // System.exit(0); } else{ HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName)); tableDesc.addFamily(new HColumnDescriptor(famName)); admin.createTable(tableDesc); System.out.println("create table success!"); } } public static void addRow(String tableName,String rowKey, String columnFamily, Map<String,String> colmap) throws Exception { Iterator<Map.Entry<String, String>> iterator = colmap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); String colname = entry.getKey(); String colval = entry.getValue(); addRowKeyValue(tableName,rowKey,columnFamily,colname, colval); } } public static Map<String,String> getRow(String tableName, String rowKey) throws IOException { Map<String,String> colmap = new HashMap<String, String>(); Table table = conn.getTable(TableName.valueOf(tableName)); Get g=new Get(Bytes.toBytes(rowKey)); Result result=table.get(g); List<Cell> cells = result.listCells(); for (Cell c : cells){ colmap.put(Bytes.toString(CellUtil.cloneQualifier(c)),Bytes.toString(CellUtil.cloneValue(c))); } table.close(); return colmap; } /* * 获得指定字段 * */ public static Map<String,String> getRow(String tableName, String rowKey,String family, List<String> fields) throws IOException { Map<String,String> colmap = new HashMap<String, String>(); Table table = conn.getTable(TableName.valueOf(tableName)); Get g=new Get(Bytes.toBytes(rowKey)); Result result=table.get(g); for(String colname :fields){ colmap.put(colname,Bytes.toString(result.getValue(Bytes.toBytes(family), Bytes.toBytes(colname)))); } table.close(); return colmap; } /* * http://blog.csdn.net/cnweike/article/details/42920547 * */ public static Map<String,Map<String,String>> getListByFilter(String tableName, String rowprefix) throws IOException { Map<String,Map<String,String>> resultmap = new HashMap<String, Map<String,String>>(); Scan scan1 = new Scan(); Table table = conn.getTable(TableName.valueOf(tableName)); // Filter rowrf = new RowFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes(rowprefix))); PrefixFilter rowrf = new PrefixFilter(Bytes.toBytes(rowprefix)); List<Filter> filters = new ArrayList<Filter>(); filters.add(rowrf); FilterList flist = new FilterList(FilterList.Operator.MUST_PASS_ALL, filters); scan1. // setStartRow(Bytes.toBytes("row1")). //setStopRow(Bytes.toBytes("row3")). setFilter(flist); ResultScanner scanner1 = table.getScanner(scan1); for(Result res : scanner1){ Map<String,String> colmap = new HashMap<String,String>(); String rowkey =null; for(Cell cell : res.rawCells()){ rowkey = Bytes.toString(CellUtil.cloneRow(cell)); colmap.put(Bytes.toString(CellUtil.cloneQualifier(cell)),Bytes.toString(CellUtil.cloneValue(cell))); } resultmap.put(rowkey, colmap); } scanner1.close(); table.close(); return resultmap; } //scan //delete /* * tablename 表名 * rowkey 行键 * columnFamily 列族名 * column 列名 * value 值 * */ public static void addRowKeyValue(String tableName, String rowKey, String columnFamily, String column, String value) throws Exception { Table table = conn.getTable(TableName.valueOf(tableName)); Put put = new Put(Bytes.toBytes(rowKey));// 指定行 // 参数分别:列族、列、值 put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value)); table.put(put); } public static void main (String [] agrs) { String tablename="jyw_testnew"; String fam = "userinfo"; try{ System.out.println(" start connect hbase"); getConnect(); System.out.println(" start create table:"+tablename); createTable(tablename,fam); System.out.println(" start insert data: rowkey=j1 uname=jiayongwei password=abcdefg"); Map<String,String> rowmap = new HashMap<String,String>(); rowmap.put("uname", "jiayongwei"); rowmap.put("password", "abcdefg"); rowmap.put("age", "19"); addRow(tablename,"j1",fam,rowmap); //插入数据 System.out.println(" start insert data: rowkey=j2 uname=jiayongwei2 password=abcdefg2"); rowmap.clear(); rowmap.put("uname", "jiayongwei2"); rowmap.put("password", "abcdefg2"); addRow(tablename,"j2",fam,rowmap); System.out.println(" start insert data: rowkey=j22 uname=jiayongwei2 password=abcdefg2"); rowmap.clear(); rowmap.put("uname", "jiayongwei22"); rowmap.put("password", "abcdefg22"); addRow(tablename,"j22",fam,rowmap); // 按 key 获得整行数据 System.out.println(" get by key return one row all columns rowkey=j1"); Map<String,String> result=getRow(tablename,"j1"); System.out.println("data:"+result); //按key获取指定字段 System.out.println(" get by key return set columns rowkey=j1, filed: password"); List<String> columns = new ArrayList<String>(); columns.add("password"); Map<String,String> result1=getRow(tablename, "j1", fam, columns); System.out.println(result1); //过滤器 System.out.println("get data by row filter j2"); Map<String,Map<String,String>> mulresult= getListByFilter(tablename, "j2"); System.out.println("data List:"+mulresult); }catch(Exception e){ e.printStackTrace(); } } }
内置过滤器参考博客:http://blog.csdn.net/cnweike/article/details/42920547
相关推荐
导入这些库后,你可以开始编写Java代码来操作HBase表。以下是一些关键步骤和API的使用: 1. **连接HBase**:首先,你需要创建一个`Configuration`对象,设置HBase的ZooKeeper连接信息,然后使用`ConnectionFactory`...
用户可以通过访问HBase的官方文档页面,然后使用浏览器的查找功能(例如按CTRL+F)搜索关键词“supported”,找到HBase与Hadoop的兼容版本对照表。此外,HBase官方也会提供特定版本的HBase支持的Hadoop版本,通常在...
(1) 列出HBase所有的表的相关信息,例如表名、创建时间等;(2) 在终端打印出指定的表的所有记录数据;(3) 向已经创建好的表添加和删除指定的列族或列;(4) 清空指定的表的所有记录数据(5) 统计表的行数。2...
本人原创, 1.Hbase连接需要改Hbase包中的两个配置文件,加上Hbase所在机器ip及端口 2.HBaseDMLT初始化环境 3.MapDataIni为建表 4.MapDataInsert为写数据 5.MapDataDelete为删除数据 6.MapDataRead为读数据
3. **获取(get)操作**:获取操作用于根据行键获取HBase表中的一行数据。HbaseTemplate的`get`方法接受RowKey作为参数,返回一个Result对象,其中包含了该行的所有列族和列的信息。 4. **执行(execute)操作**:`...
在本文中,我们将详细讲解Hbase的安装过程以及基本操作,特别针对在Linux环境下使用清华大学镜像进行下载的情况。Hbase是一个分布式的、面向列的数据库,常用于大数据存储,是Apache Hadoop生态系统的一部分。以下是...
HBase是Apache的一个开源非...以上操作涵盖了HBase的基本操作命令,从创建表、管理表结构、数据的增删改查到表的管理,能够满足大多数对HBase的基本操作需求。通过这些操作,用户可以对HBase进行有效的数据管理和维护。
继续深入,HBase的操作还包括创建表、插入数据、更新数据和删除数据等。在Shell中,创建表如`create 'table_name', 'column_family'`,插入数据则使用`put`命令,更新可通过`put`命令覆盖原有数据,删除数据可以是...
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现,类似Google Bigtable...
在本文中,我们将深入探讨如何...理解HBase的表结构、行键设计、列族和时间戳等概念对于有效地使用Scala API操作HBase至关重要。同时,熟悉HBase的RegionServer和Master节点的工作原理也有助于优化你的应用程序性能。
phoenix-hbase各个版本源码的下载地址,由于phoenix对hbase的版本有要求,所以大家根据自己环境的情况下载
通常,Hadoop的版本发布会包括对HBase和Hive的兼容性测试报告,但这并不意味着所有早期版本的HBase和Hive都能与新版Hadoop完全兼容。相反,有时候新版本的Hadoop可能需要与特定版本的HBase和Hive一起使用才能正常...
根据提供的文件信息,本文将详细介绍HBase的Shell操作及其应用场景,包括如何创建表、插入数据、查询数据等关键操作。 ### HBase Shell简介 HBase Shell是HBase提供的一种交互式命令行工具,用于执行HBase操作。它...
本压缩包包含了HBase的两个具体版本——1.2.0和1.2.6的jar依赖包,这些都是Java开发者在使用Eclipse进行HBase开发时必不可少的库文件。 首先,我们来详细了解一下HBase的1.2.0版本。此版本发布于2016年,相较于早期...
Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...
1. **环境准备**:首先确保已安装Java Development Kit(JDK)且版本不低于1.8,因为HBase依赖于Java运行环境。 2. **下载HBase**:从Apache官网下载最新稳定版的HBase二进制包,解压到指定目录。 3. **配置环境变量...
hbase表结构设计,新建表,查询表语句,删除表数据,删除表的例子。
实验旨在让参与者熟练掌握HBase的Shell操作,包括创建表、输入数据以及进行特定查询。以下是详细步骤及知识点解析: ### 1. HBase Shell基础 HBase Shell是HBase提供的命令行界面,用户可以通过它来与HBase集群...
HBase 多表关联查找资料 本文将详细介绍 HBase 多表关联查找的知识点,涵盖了 HBase 表结构设计、rowkey 设计、columnfamily 设计、column 设计等方面的内容,并结合实际应用场景,提供了一些实用的设计方法和思路...
HBase提供了数据的批量导入操作,常见的工具有HBase自带的ImportTsv和CompleteBulkLoad工具,可以高效地将大量数据导入HBase表中。 ### 实验原理和环境 HBase是一种基于列存储的数据库,它适用于存储非结构化和半...