- 浏览: 2211115 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
写了个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()); } } }
- HbaseCommons.zip (2.1 KB)
- 下载次数: 69
发表评论
-
关于Hbase多版本存储的一个注意点
2018-04-19 11:39 1692我们知道hbase是一个多版本的管理系统,在0.96的版本之前 ... -
Spark如何读取Hbase特定查询的数据
2017-06-29 21:42 4479最近工作需要使用到Spark操作Hbase,上篇文章已经写 ... -
如何使用scala+spark读写hbase?
2017-06-12 19:48 3479最近工作有点忙,所以文章更新频率低了点,希望大家可以谅解,好 ... -
Hadoop+Hbase集群数据迁移问题
2016-03-23 21:00 2587数据迁移或备份是任何 ... -
如何监控你的Hadoop+Hbase集群?
2016-03-21 16:10 4976前言 监控hadoop的框架� ... -
Hbase+Solr实现二级索引提供高效查询
2016-02-18 18:28 7155接着上一篇介绍协处理 ... -
Hbase协处理器介绍
2016-02-18 11:43 3914(一)Hbase协处理器的� ... -
Spark读取Hbase数据
2016-01-21 15:39 2628直接上代码:可以上传jar包,给远程的spark集群,这样 ... -
Spark SQL+Hive历险记
2016-01-21 11:40 6178基础依赖环境 Apache Hadoop2.7.1 Apa ... -
Apache Phoenix安装使用
2016-01-08 16:59 2676前提Hadoop+Hbase集群已经 ... -
一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
2016-01-05 19:11 2836环境如下: Centos6.5 Apac ... -
Hadoop2.7.1和Hbase0.98添加LZO压缩
2016-01-04 17:46 26371,执行命令安装一些依赖组件 yum install -y ... -
Hbase设置Snappy压缩测试
2015-12-30 15:31 3480在DT大数据时代,海量数据的存储和分析是一个巨大的挑战,给我 ... -
Hbase1.1.2高可用配置Hmaster容错
2015-11-12 17:05 1540Hbase的Hmaster配置HA相比Hadoop的Name ... -
设置Hadoop+Hbase集群pid文件存储位置
2015-10-20 13:40 2916有时候,我们对运行几 ... -
hadoop2.2生态系统快速安装脚本
2014-09-23 15:08 2038对于使用hadoop进行开发的朋友们,可能要自己搭建一套had ... -
Hadoop2.2.0+Hive0.13+Hbase0.96.2集成
2014-08-06 20:49 1898本篇,散仙主要讲的是使用Hive如何和Hbase集成,Hbas ... -
Hadoop2.2.0+Hbase0.96.2分布式集群搭建
2014-07-23 21:39 1629最近项目有用到Hbase存储数据,由于现在的hadoop 的集 ... -
Java连接Hbase0.96异常
2014-07-14 13:43 2061在Windows上直接使用JAVA API连接Hbase0.9 ... -
Hadoop2.2.0集成Hbase0.96报的一个异常
2014-07-14 11:18 831最近项目抓取的数据,存在Hbase里,所以需要从Hbase里读 ...
相关推荐
总结来说,掌握HBase 0.96版本的Java编程涉及理解HBase的核心概念,如表、列族、行键、时间戳,以及如何通过Java API进行连接、操作数据、管理表和处理故障。同时,了解异步操作、批量操作和监听器机制也是提升HBase...
使用这个jar包,开发者可以构建基于HBase的应用程序,利用Java API进行数据操作。在开发过程中,需要注意的是HBase的API设计是面向列的,与传统的面向行的数据库API有所不同,需要理解如何定义表结构,如何进行增删...
2. **建立连接**: 使用配置创建`HConnection`对象,但请注意,从HBase 0.96版本开始,推荐使用`Connection`代替。 ```java Connection connection = ConnectionFactory.createConnection(config); ``` 3. **操作表...
HBase官方中文文档概述了Apache HBase TM的基本概念、配置方法、升级策略、shell使用、数据模型、架构设计、安全机制、API接口、性能调优以及故障排除等多方面的知识。HBase是一个开源的非关系型分布式数据库(NoSQL...
- **REST**:说明 HBase 的 REST API 接口及其使用方法。 - **Thrift**:解释 HBase 的 Thrift 接口,并给出示例。 - **C/C++ Apache HBase Client**:提供 C/C++ 开发者使用的 HBase 客户端接口。 #### 十二、...
Crunch项目的API支持包括对HBase 0.96.x的支持,使得Crunch能够在HBase上执行数据处理任务。此外,Crunch项目还提供了Source Code、Mailing Lists、Issue Tracking、Wiki等资源,便于开发者下载、参与讨论、报告问题...