`
weitao1026
  • 浏览: 1048430 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hbase新的api的增删改查的工具类

阅读更多

写了个Hbase新的api的增删改查的工具类

Java代码
  1. package com.dhgate.hbase.test;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  1. import org.apache.hadoop.conf.Configuration;  
  2. import org.apache.hadoop.hbase.Cell;  
  3. import org.apache.hadoop.hbase.CellUtil;  
  4. import org.apache.hadoop.hbase.HBaseConfiguration;  
  5. import org.apache.hadoop.hbase.HColumnDescriptor;  
  6. import org.apache.hadoop.hbase.HTableDescriptor;  
  7. import org.apache.hadoop.hbase.TableName;  
  8. import org.apache.hadoop.hbase.client.Delete;  
  9. import org.apache.hadoop.hbase.client.Get;  
  10. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  11. import org.apache.hadoop.hbase.client.HTable;  
  12. import org.apache.hadoop.hbase.client.Put;  
  13. import org.apache.hadoop.hbase.client.Result;  
  14. import org.apache.hadoop.hbase.client.ResultScanner;  
  15. import org.apache.hadoop.hbase.client.Scan;  
  16. import org.apache.hadoop.hbase.filter.PageFilter;  
  17. import org.apache.hadoop.hbase.filter.PrefixFilter;  
  18. import org.apache.hadoop.hbase.util.Bytes;  
  19.   
  20. /** 
  21.  * 基于新的API 
  22.  * Hbase0.96版本 
  23.  * 写的工具类 
  24.  *  
  25.  * @author qindongliang 
  26.  * 大数据技术交流群: 376932160 
  27.  *  
  28.  * **/  
  29. public class HbaseCommons {  
  30.   
  31.       
  32.     static Configuration conf=HBaseConfiguration.create();  
  33.     static String tableName="";  
  34.    
  35.       
  36.       
  37.       
  38.     public static void main(String[] args)throws Exception {  
  39.           
  40.         //String tableName="test";  
  41.         //createTable(tableName, null);  
  42.           
  43.     }  
  44.       
  45.       
  46.     /** 
  47.      * 批量添加数据 
  48.      * @param tableName 标名字 
  49.      * @param rows rowkey行健的集合 
  50.      * 本方法仅作示例,其他的内容需要看自己义务改变 
  51.      *  
  52.      * **/  
  53.     public static void insertList(String tableName,String rows[])throws Exception{  
  54.         HTable table=new HTable(conf, tableName);  
  55.         List<Put> list=new ArrayList<Put>();  
  56.         for(String r:rows){  
  57.             Put p=new Put(Bytes.toBytes(r));  
  58.            //此处示例添加其他信息  
  59.             //p.add(Bytes.toBytes("family"),Bytes.toBytes("column"), 1000, Bytes.toBytes("value"));  
  60.             list.add(p);  
  61.         }  
  62.         table.put(list);//批量添加  
  63.         table.close();//释放资源  
  64.     }  
  65.       
  66.     /** 
  67.      * 创建一个表 
  68.      * @param tableName 表名字 
  69.      * @param columnFamilys 列簇 
  70.      *  
  71.      * **/  
  72.     public static void createTable(String tableName,String[] columnFamilys)throws Exception{  
  73.         //admin 对象  
  74.         HBaseAdmin admin=new HBaseAdmin(conf);  
  75.         if(admin.tableExists(tableName)){  
  76.             System.out.println("此表,已存在!");  
  77.         }else{  
  78.             //旧的写法  
  79.             //HTableDescriptor tableDesc=new HTableDescriptor(tableName);  
  80.             //新的api  
  81.             HTableDescriptor tableDesc=new HTableDescriptor(TableName.valueOf(tableName));  
  82.               
  83.             for(String columnFamily:columnFamilys){  
  84.                 tableDesc.addFamily(new HColumnDescriptor(columnFamily));  
  85.             }  
  86.               
  87.             admin.createTable(tableDesc);  
  88.             System.out.println("建表成功!");  
  89.               
  90.         }  
  91.         admin.close();//关闭释放资源  
  92.           
  93.     }  
  94.       
  95.     /** 
  96.      * 删除一个表 
  97.      * @param tableName 删除的表名 
  98.      * */  
  99.     public static void deleteTable(String tableName)throws Exception{  
  100.         HBaseAdmin admin=new HBaseAdmin(conf);  
  101.         if(admin.tableExists(tableName)){  
  102.             admin.disableTable(tableName);//禁用表  
  103.             admin.deleteTable(tableName);//删除表  
  104.             System.out.println("删除表成功!");  
  105.         }else{  
  106.             System.out.println("删除的表不存在!");  
  107.         }  
  108.         admin.close();  
  109.     }  
  110.       
  111.     /** 
  112.      * 插入一条数据 
  113.      * @param tableName 表明 
  114.      * @param columnFamily 列簇 
  115.      * @param column      列 
  116.      * @param value       值 
  117.      *  
  118.      * ***/  
  119.     public static void insertOneRow(String tableName,String rowkey,String columnFamily,String column,String value)throws Exception{  
  120.           
  121.         HTable table=new HTable(conf, tableName);  
  122.         Put put=new Put(Bytes.toBytes(rowkey));  
  123.         put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));  
  124.         table.put(put);//放入表  
  125.         table.close();//释放资源  
  126.           
  127.     }  
  128.       
  129.     /** 
  130.      * 删除一条数据 
  131.      * @param tableName 表名 
  132.      * @param row  rowkey行键 
  133.      *  
  134.      * */  
  135.     public static void deleteOneRow(String tableName,String row)throws Exception{  
  136.           
  137.         HTable table=new HTable(conf, tableName);  
  138.         Delete delete=new Delete(Bytes.toBytes(row));  
  139.         table.delete(delete);  
  140.         table.close();  
  141.     }  
  142.       
  143.       
  144.     /** 
  145.      * 删除多条数据 
  146.      * @param tableName 表名 
  147.      * @param rows 行健集合 
  148.      *  
  149.      * **/  
  150.     public static void deleteList(String tableName,String rows[])throws Exception{  
  151.         HTable table=new HTable(conf, tableName);  
  152.         List<Delete> list=new ArrayList<Delete>();  
  153.         for(String row:rows){  
  154.             Delete del=new Delete(Bytes.toBytes(row));  
  155.             list.add(del);  
  156.         }  
  157.         table.delete(list);  
  158.         table.close();//释放资源  
  159.           
  160.     }  
  161.       
  162.       
  163.     /** 
  164.      * 获取一条数据,根据rowkey 
  165.      * @param  tableName 表名 
  166.      * @param  row 行健 
  167.      *  
  168.      * **/  
  169.     public static void getOneRow(String tableName,String row)throws Exception{  
  170.         HTable table=new HTable(conf, tableName);  
  171.         Get get=new Get(Bytes.toBytes(row));  
  172.         Result result=table.get(get);  
  173.         printRecoder(result);//打印记录  
  174.         table.close();//释放资源  
  175.     }  
  176.       
  177.     /** 
  178.      * 查看某个表下的所有数据 
  179.      *  
  180.      * @param tableName 表名 
  181.      * */  
  182.     public static void showAll(String tableName)throws Exception{  
  183.         HTable table=new HTable(conf, tableName);  
  184.         Scan scan=new Scan();  
  185.         ResultScanner rs=table.getScanner(scan);  
  186.         for(Result r:rs){  
  187.             printRecoder(r);//打印记录  
  188.         }  
  189.         table.close();//释放资源  
  190.     }  
  191.       
  192.       
  193.     /** 
  194.      * 查看某个表下的所有数据 
  195.      *  
  196.      * @param tableName 表名 
  197.      * @param rowKey  行健 
  198.      * */  
  199.     public static void ScanPrefixByRowKey(String tableName,String rowKey)throws Exception{  
  200.         HTable table=new HTable(conf, tableName);  
  201.         Scan scan=new Scan();  
  202.         scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));  
  203.         ResultScanner rs=table.getScanner(scan);  
  204.         for(Result r:rs){  
  205.             printRecoder(r);//打印记录  
  206.         }  
  207.         table.close();//释放资源  
  208.     }  
  209.       
  210.       
  211.     /** 
  212.      * 查看某个表下的所有数据 
  213.      *  
  214.      * @param tableName 表名 
  215.      * @param rowKey 行健扫描 
  216.      * @param limit  限制返回数据量 
  217.      * */  
  218.     public static void ScanPrefixByRowKeyAndLimit(String tableName,String rowKey,long limit)throws Exception{  
  219.         HTable table=new HTable(conf, tableName);  
  220.         Scan scan=new Scan();  
  221.         scan.setFilter(new PrefixFilter(Bytes.toBytes(rowKey)));  
  222.         scan.setFilter(new  PageFilter(limit));  
  223.         ResultScanner rs=table.getScanner(scan);  
  224.         for(Result r:rs){  
  225.             printRecoder(r);//打印记录  
  226.         }  
  227.         table.close();//释放资源  
  228.     }  
  229.       
  230.       
  231.     /** 
  232.      * 根据rowkey扫描一段范围 
  233.      * @param tableName 表名 
  234.      * @param startRow 开始的行健 
  235.      * @param stopRow  结束的行健 
  236.      * **/  
  237.     public  void scanByStartAndStopRow(String tableName,String startRow,String stopRow)throws Exception{  
  238.         HTable table=new HTable(conf, tableName);  
  239.         Scan scan=new Scan();  
  240.         scan.setStartRow(Bytes.toBytes(startRow));  
  241.         scan.setStopRow(Bytes.toBytes(stopRow));  
  242.         ResultScanner rs=table.getScanner(scan);  
  243.         for(Result r:rs){  
  244.             printRecoder(r);  
  245.         }  
  246.         table.close();//释放资源  
  247.           
  248.           
  249.     }  
  250.     /** 
  251.      * 扫描整个表里面具体的某个字段的值 
  252.      * @param tableName  表名 
  253.      * @param columnFalimy 列簇 
  254.      * @param column 列 
  255.      * **/  
  256.     public static  void getValueDetail(String tableName,String columnFalimy,String column)throws Exception{  
  257.       
  258.         HTable table=new HTable(conf, tableName);  
  259.         Scan scan=new Scan();  
  260.         ResultScanner rs=table.getScanner(scan);  
  261.         for(Result r:rs){  
  262.             System.out.println("值: " +new String(r.getValue(Bytes.toBytes(columnFalimy), Bytes.toBytes(column))));  
  263.         }  
  264.         table.close();//释放资源  
  265.           
  266.     }  
  267.       
  268.       
  269.       
  270.       
  271.       
  272.       
  273.       
  274.       
  275.     /** 
  276.      * 打印一条记录的详情 
  277.      *  
  278.      * */  
  279.     public  static void printRecoder(Result result)throws Exception{  
  280.         for(Cell cell:result.rawCells()){  
  281.             System.out.print("行健: "+new String(CellUtil.cloneRow(cell)));  
  282.             System.out.print("列簇: "+new String(CellUtil.cloneFamily(cell)));  
  283.             System.out.print(" 列: "+new String(CellUtil.cloneQualifier(cell)));  
  284.             System.out.print(" 值: "+new String(CellUtil.cloneValue(cell)));  
  285.             System.out.println("时间戳: "+cell.getTimestamp());      
  286.         }  
  287.     }  
  288.       
  289.       
  290.       
  291. }
分享到:
评论

相关推荐

    代码中利用Hbase相关的API,包括对HBase的增删改查等操作

    HBase提供了一套Java API,使得开发者能够轻松地进行数据的增删改查操作。本教程将深入探讨如何在代码中利用HBase API进行基本的数据操作。 首先,为了使用HBase API,我们需要在项目中引入相应的依赖。由于HBase是...

    java链接并对hbase进行增删改查操作的实例代码(含批量插入,范围查询等,并包含所需jar包)

    Java链接HBase进行增删改查操作是大数据领域常见的任务,尤其在处理大规模分布式存储时。HBase,作为Apache Hadoop生态系统的一部分,是一个基于列族的NoSQL数据库,提供了高性能、高可扩展性的数据存储解决方案。这...

    最新版linux hbase-2.3.3-client-bin.tar.gz

    HBase客户端的核心操作包括创建表、删除表、扫描表以及对行、列族和单元格的增删改查。例如,我们可以使用HTable接口来操作表,HBaseAdmin类来进行表的管理和操作。HBase的API设计遵循了Java的模板方法模式,使得...

    hbase-0.94.13 jar和源码

    2. `HTable`:代表一个HBase表,提供了增删改查的基本操作。 3. `Put`:用于向表中写入数据。 4. `Get`:用于从表中读取数据。 5. `Scan`:用于执行范围扫描,获取多行数据。 6. `Delete`:用于删除表中的数据。 ...

    Hbase+Spring boot实战分布式文件存储

    9-1 Zookeeper安装与HBase配置优化 9-2 Hos开发逻辑梳理 9-3 Hos模块划分及mybatis配置 第10章 子模块-用户管理模块 Hos服务用户管理模块开发,基于第九章的数据库操作模块,开发相关的实体类对用户的增删改查操作...

    基于注解的hbase orm小工具,目前比较简单

    然后,我们可以利用ORM工具进行数据的增删改查: ```java // 创建 User user = new User(); user.setId("1"); user.setName("张三"); user.setEmail("zhangsan@example.com"); orm.save(user); // 查询 User ...

    utils_hbase_

    - 数据增删改查:`Put`、`Get`、`Delete`和`Scan`是HBase的基本操作类型。`Put`用于插入数据,`Get`用于查询,`Delete`用于删除,而`Scan`用于批量读取数据。 3. **HBase标的操作**: - 行键(Row Key)操作:行...

    HBase编程实践

    Java API提供了丰富的类和接口,如HBaseAdmin、HTable等,用于管理表、执行增删改查操作。HBase Shell则是一个基于JRuby的命令行工具,适合进行简单的操作和测试。 1. **创建表和列族** 创建HBase表时,需要定义...

    使用Phoenix通过jdbc连接hbase

    这篇文档将详细介绍如何使用Phoenix通过JDBC(Java Database Connectivity)连接到HBase数据库,并进行相关的数据操作,如表的创建、删除以及数据的增删改查。 首先,理解Phoenix的作用至关重要。Phoenix提供了SQL...

    最新版linux hbase-2.3.2-client-bin.tar.gz

    3. 数据读写:对于数据操作,`Table`接口提供了基本的增删查改功能。`Put`对象用于插入数据,`Get`对象用于查询数据,而`Scan`对象则用于批量扫描数据。`Result`对象则返回查询结果。 4. 行键与列族:HBase的行键...

    hadoop-2.7.2-hbase-jar.tar.gz

    在开发层面,"hadoop-2.7.2-hbase-jar"提供了Java API,允许开发者编写HBase客户端程序,进行数据的增删查改操作。同时,HBase还支持使用HBase Shell,这是一个基于JRuby的命令行工具,用户可以通过它直接与HBase...

    Spark以及hbase学习资料

    了解HBase的Shell操作、数据模型定义、增删改查操作以及与Hadoop MapReduce的配合使用,是深入学习的关键。 Spark与HBase的结合可以实现高效的数据分析。例如,你可以使用Spark SQL连接HBase,通过DataFrame API对...

    hbase-0.20_程式設計

    通过`HTable`类可以实现对表的增删改查操作,例如: - 使用`Put`类向表中插入数据。 - 使用`Get`类从表中获取数据。 - 使用`Delete`类从表中删除数据。 - 使用`Scanner`类从表中扫描数据。 ### 结合 MapReduce ...

    HBase安装与应用编程.docx

    4. 更多操作:例如创建 "Course" 和 "Score" 表,进行相应的增删查改操作。 【HBase Shell】 HBase 提供了一个交互式的 Shell,可以直接在命令行中执行各种操作: 1. 进入 HBase Shell:运行 `hbase shell`。 2. ...

    hbase访问方式之java api

    对于数据的增删改查,我们可以使用`HTable`类。在插入数据时,我们可以创建一个`Put`对象,并指定行键(row key)、列族(column family)、列限定符(column qualifier)和值: ```java HTable table = new HTable...

    细细品味Hadoop_Hadoop集群(第11期副刊)_HBase之旅.pdf

    - **HBase Shell**:这是一种简单直观的方式,适合于执行基本的数据增删改查操作。例如,`put 'blog', '1', 'author:name', 'xia520pi'`用于插入一条记录。 - **Java API**:对于更复杂的数据操作和批量处理任务,...

    Beetlsql自学笔记(csdn)————程序.pdf

    - **内置增删改查功能**:BeetlSQL提供了内置的CRUD操作,大大减少了开发者的工作量。 - **SQL管理**:通过Markdown文件管理SQL,使得复杂的SQL编写更为便捷。 - **链式API**:对于简单的SQL,可以通过Query类的...

    hadoop实战项目

    - **关键词管理**:实现关键词的增删改查操作,支持关键词的批量导入和导出。 - **关键词导入与导出**:支持从CSV或DICX文件导入关键词,并能够将关键词导出到指定格式的文件中。 ##### 7. 系统API模块 - **API设计...

    java学习路线(项目开发、web方向、大数据方向).rar

    - **数据库连接**:学习JDBC,掌握数据库的连接、查询、增删改查操作,以及事务处理。 - **前端技术**:HTML、CSS、JavaScript基础,理解AJAX异步请求,使用jQuery简化DOM操作。 4. **项目开发篇** - **项目结构...

    大数据课程体系.docx

    - **HBase基本操作**:演示如何使用HBase Shell进行数据的增删改查操作。 - **HBase Shell与演示**:提供具体的HBase Shell命令示例。 - **HBase树形表设计**:指导如何设计适合HBase的树形数据结构。 - **HBase一对...

Global site tag (gtag.js) - Google Analytics