写了个Hbase新的api的增删改查的工具类
- package com.dhgate.hbase.test;
- import java.util.ArrayList;
- import java.util.List;
- 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.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.filter.PageFilter;
- import org.apache.hadoop.hbase.filter.PrefixFilter;
- import org.apache.hadoop.hbase.util.Bytes;
- /**
- * 基于新的API
- * Hbase0.96版本
- * 写的工具类
- *
- * @author qindongliang
- * 大数据技术交流群: 376932160
- *
- * **/
- public class HbaseCommons {
- static Configuration conf=HBaseConfiguration.create();
- static String tableName="";
- public static void main(String[] args)throws Exception {
- //String tableName="test";
- //createTable(tableName, null);
- }
- /**
- * 批量添加数据
- * @param tableName 标名字
- * @param rows rowkey行健的集合
- * 本方法仅作示例,其他的内容需要看自己义务改变
- *
- * **/
- public static void insertList(String tableName,String rows[])throws Exception{
- HTable table=new HTable(conf, tableName);
- List<Put> list=new ArrayList<Put>();
- for(String r:rows){
- Put p=new Put(Bytes.toBytes(r));
- //此处示例添加其他信息
- //p.add(Bytes.toBytes("family"),Bytes.toBytes("column"), 1000, Bytes.toBytes("value"));
- list.add(p);
- }
- table.put(list);//批量添加
- table.close();//释放资源
- }
- /**
- * 创建一个表
- * @param tableName 表名字
- * @param columnFamilys 列簇
- *
- * **/
- public static void createTable(String tableName,String[] columnFamilys)throws Exception{
- //admin 对象
- HBaseAdmin admin=new HBaseAdmin(conf);
- if(admin.tableExists(tableName)){
- System.out.println("此表,已存在!");
- }else{
- //旧的写法
- //HTableDescriptor tableDesc=new HTableDescriptor(tableName);
- //新的api
- HTableDescriptor tableDesc=new HTableDescriptor(TableName.valueOf(tableName));
- for(String columnFamily:columnFamilys){
- tableDesc.addFamily(new HColumnDescriptor(columnFamily));
- }
- admin.createTable(tableDesc);
- System.out.println("建表成功!");
- }
- admin.close();//关闭释放资源
- }
- /**
- * 删除一个表
- * @param tableName 删除的表名
- * */
- public static void deleteTable(String tableName)throws Exception{
- HBaseAdmin admin=new HBaseAdmin(conf);
- if(admin.tableExists(tableName)){
- admin.disableTable(tableName);//禁用表
- admin.deleteTable(tableName);//删除表
- System.out.println("删除表成功!");
- }else{
- System.out.println("删除的表不存在!");
- }
- admin.close();
- }
- /**
- * 插入一条数据
- * @param tableName 表明
- * @param columnFamily 列簇
- * @param column 列
- * @param value 值
- *
- * ***/
- public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String value)throws Exception{
- HTable table=new HTable(conf, tableName);
- Put put=new Put(Bytes.toBytes(rowkey));
- put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
- table.put(put);//放入表
- table.close();//释放资源
- }
- /**
- * 删除一条数据
- * @param tableName 表名
- * @param row rowkey行键
- *
- * */
- public static void deleteOneRow(String tableName,String row)throws Exception{
- HTable table=new HTable(conf, tableName);
- Delete delete=new Delete(Bytes.toBytes(row));
- table.delete(delete);
- table.close();
- }
- /**
- * 删除多条数据
- * @param tableName 表名
- * @param rows 行健集合
- *
- * **/
- public static void deleteList(String tableName,String rows[])throws Exception{
- HTable table=new HTable(conf, tableName);
- List<Delete> list=new ArrayList<Delete>();
- for(String row:rows){
- Delete del=new Delete(Bytes.toBytes(row));
- list.add(del);
- }
- table.delete(list);
- table.close();//释放资源
- }
- /**
- * 获取一条数据,根据rowkey
- * @param tableName 表名
- * @param row 行健
- *
- * **/
- public static void getOneRow(String tableName,String row)throws Exception{
- HTable table=new HTable(conf, tableName);
- Get get=new Get(Bytes.toBytes(row));
- Result result=table.get(get);
- printRecoder(result);//打印记录
- table.close();//释放资源
- }
- /**
- * 查看某个表下的所有数据
- *
- * @param tableName 表名
- * */
- public static void showAll(String tableName)throws Exception{
- HTable table=new HTable(conf, tableName);
- Scan scan=new Scan();
- ResultScanner rs=table.getScanner(scan);
- for(Result r:rs){
- printRecoder(r);//打印记录
- }
- table.close();//释放资源
- }
- /**
- * 查看某个表下的所有数据
- *
- * @param tableName 表名
- * @param rowKey 行健
- * */
- public static void ScanPrefixByRowKey(String tableName,String rowKey)throws Exception{
- HTable table=new HTable(conf, tableName);
- Scan scan=new Scan();
- scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));
- ResultScanner rs=table.getScanner(scan);
- for(Result r:rs){
- printRecoder(r);//打印记录
- }
- table.close();//释放资源
- }
- /**
- * 查看某个表下的所有数据
- *
- * @param tableName 表名
- * @param rowKey 行健扫描
- * @param limit 限制返回数据量
- * */
- public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey,long limit)throws Exception{
- HTable table=new HTable(conf, tableName);
- Scan scan=new Scan();
- scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));
- scan.setFilter(new PageFilter(limit));
- ResultScanner rs=table.getScanner(scan);
- for(Result r:rs){
- printRecoder(r);//打印记录
- }
- table.close();//释放资源
- }
- /**
- * 根据rowkey扫描一段范围
- * @param tableName 表名
- * @param startRow 开始的行健
- * @param stopRow 结束的行健
- * **/
- public void scanByStartAndStopRow(String tableName,String startRow,String stopRow)throws Exception{
- HTable table=new HTable(conf, tableName);
- Scan scan=new Scan();
- scan.setStartRow(Bytes.toBytes(startRow));
- scan.setStopRow(Bytes.toBytes(stopRow));
- ResultScanner rs=table.getScanner(scan);
- for(Result r:rs){
- printRecoder(r);
- }
- table.close();//释放资源
- }
- /**
- * 扫描整个表里面具体的某个字段的值
- * @param tableName 表名
- * @param columnFalimy 列簇
- * @param column 列
- * **/
- public static void getValueDetail(String tableName,String columnFalimy,String column)throws Exception{
- HTable table=new HTable(conf, tableName);
- Scan scan=new Scan();
- ResultScanner rs=table.getScanner(scan);
- for(Result r:rs){
- System.out.println("值: " +new String(r.getValue(Bytes.toBytes(columnFalimy), Bytes.toBytes(column))));
- }
- table.close();//释放资源
- }
- /**
- * 打印一条记录的详情
- *
- * */
- public static void printRecoder(Result result)throws Exception{
- for(Cell cell:result.rawCells()){
- System.out.print("行健: "+new String(CellUtil.cloneRow(cell)));
- System.out.print("列簇: "+new String(CellUtil.cloneFamily(cell)));
- System.out.print(" 列: "+new String(CellUtil.cloneQualifier(cell)));
- System.out.print(" 值: "+new String(CellUtil.cloneValue(cell)));
- System.out.println("时间戳: "+cell.getTimestamp());
- }
- }
- }
相关推荐
HBase提供了一套Java API,使得开发者能够轻松地进行数据的增删改查操作。本教程将深入探讨如何在代码中利用HBase API进行基本的数据操作。 首先,为了使用HBase API,我们需要在项目中引入相应的依赖。由于HBase是...
Java链接HBase进行增删改查操作是大数据领域常见的任务,尤其在处理大规模分布式存储时。HBase,作为Apache Hadoop生态系统的一部分,是一个基于列族的NoSQL数据库,提供了高性能、高可扩展性的数据存储解决方案。这...
HBase客户端的核心操作包括创建表、删除表、扫描表以及对行、列族和单元格的增删改查。例如,我们可以使用HTable接口来操作表,HBaseAdmin类来进行表的管理和操作。HBase的API设计遵循了Java的模板方法模式,使得...
2. `HTable`:代表一个HBase表,提供了增删改查的基本操作。 3. `Put`:用于向表中写入数据。 4. `Get`:用于从表中读取数据。 5. `Scan`:用于执行范围扫描,获取多行数据。 6. `Delete`:用于删除表中的数据。 ...
9-1 Zookeeper安装与HBase配置优化 9-2 Hos开发逻辑梳理 9-3 Hos模块划分及mybatis配置 第10章 子模块-用户管理模块 Hos服务用户管理模块开发,基于第九章的数据库操作模块,开发相关的实体类对用户的增删改查操作...
然后,我们可以利用ORM工具进行数据的增删改查: ```java // 创建 User user = new User(); user.setId("1"); user.setName("张三"); user.setEmail("zhangsan@example.com"); orm.save(user); // 查询 User ...
- 数据增删改查:`Put`、`Get`、`Delete`和`Scan`是HBase的基本操作类型。`Put`用于插入数据,`Get`用于查询,`Delete`用于删除,而`Scan`用于批量读取数据。 3. **HBase标的操作**: - 行键(Row Key)操作:行...
Java API提供了丰富的类和接口,如HBaseAdmin、HTable等,用于管理表、执行增删改查操作。HBase Shell则是一个基于JRuby的命令行工具,适合进行简单的操作和测试。 1. **创建表和列族** 创建HBase表时,需要定义...
这篇文档将详细介绍如何使用Phoenix通过JDBC(Java Database Connectivity)连接到HBase数据库,并进行相关的数据操作,如表的创建、删除以及数据的增删改查。 首先,理解Phoenix的作用至关重要。Phoenix提供了SQL...
3. 数据读写:对于数据操作,`Table`接口提供了基本的增删查改功能。`Put`对象用于插入数据,`Get`对象用于查询数据,而`Scan`对象则用于批量扫描数据。`Result`对象则返回查询结果。 4. 行键与列族:HBase的行键...
在开发层面,"hadoop-2.7.2-hbase-jar"提供了Java API,允许开发者编写HBase客户端程序,进行数据的增删查改操作。同时,HBase还支持使用HBase Shell,这是一个基于JRuby的命令行工具,用户可以通过它直接与HBase...
了解HBase的Shell操作、数据模型定义、增删改查操作以及与Hadoop MapReduce的配合使用,是深入学习的关键。 Spark与HBase的结合可以实现高效的数据分析。例如,你可以使用Spark SQL连接HBase,通过DataFrame API对...
通过`HTable`类可以实现对表的增删改查操作,例如: - 使用`Put`类向表中插入数据。 - 使用`Get`类从表中获取数据。 - 使用`Delete`类从表中删除数据。 - 使用`Scanner`类从表中扫描数据。 ### 结合 MapReduce ...
4. 更多操作:例如创建 "Course" 和 "Score" 表,进行相应的增删查改操作。 【HBase Shell】 HBase 提供了一个交互式的 Shell,可以直接在命令行中执行各种操作: 1. 进入 HBase Shell:运行 `hbase shell`。 2. ...
对于数据的增删改查,我们可以使用`HTable`类。在插入数据时,我们可以创建一个`Put`对象,并指定行键(row key)、列族(column family)、列限定符(column qualifier)和值: ```java HTable table = new HTable...
- **HBase Shell**:这是一种简单直观的方式,适合于执行基本的数据增删改查操作。例如,`put 'blog', '1', 'author:name', 'xia520pi'`用于插入一条记录。 - **Java API**:对于更复杂的数据操作和批量处理任务,...
- **内置增删改查功能**:BeetlSQL提供了内置的CRUD操作,大大减少了开发者的工作量。 - **SQL管理**:通过Markdown文件管理SQL,使得复杂的SQL编写更为便捷。 - **链式API**:对于简单的SQL,可以通过Query类的...
- **关键词管理**:实现关键词的增删改查操作,支持关键词的批量导入和导出。 - **关键词导入与导出**:支持从CSV或DICX文件导入关键词,并能够将关键词导出到指定格式的文件中。 ##### 7. 系统API模块 - **API设计...
- **数据库连接**:学习JDBC,掌握数据库的连接、查询、增删改查操作,以及事务处理。 - **前端技术**:HTML、CSS、JavaScript基础,理解AJAX异步请求,使用jQuery简化DOM操作。 4. **项目开发篇** - **项目结构...
- **HBase基本操作**:演示如何使用HBase Shell进行数据的增删改查操作。 - **HBase Shell与演示**:提供具体的HBase Shell命令示例。 - **HBase树形表设计**:指导如何设计适合HBase的树形数据结构。 - **HBase一对...