- 浏览: 2188571 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1653我们知道hbase是一个多版本的管理系统,在0.96的版本之前 ... -
Spark如何读取Hbase特定查询的数据
2017-06-29 21:42 4454最近工作需要使用到Spark操作Hbase,上篇文章已经写 ... -
如何使用scala+spark读写hbase?
2017-06-12 19:48 3449最近工作有点忙,所以文章更新频率低了点,希望大家可以谅解,好 ... -
Hadoop+Hbase集群数据迁移问题
2016-03-23 21:00 2528数据迁移或备份是任何 ... -
如何监控你的Hadoop+Hbase集群?
2016-03-21 16:10 4924前言 监控hadoop的框架 ... -
Hbase+Solr实现二级索引提供高效查询
2016-02-18 18:28 7092接着上一篇介绍协处理 ... -
Hbase协处理器介绍
2016-02-18 11:43 3861(一)Hbase协处理器的 ... -
Spark读取Hbase数据
2016-01-21 15:39 2590直接上代码:可以上传jar包,给远程的spark集群,这样 ... -
Spark SQL+Hive历险记
2016-01-21 11:40 6137基础依赖环境 Apache Hadoop2.7.1 Apa ... -
Apache Phoenix安装使用
2016-01-08 16:59 2628前提Hadoop+Hbase集群已经 ... -
一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
2016-01-05 19:11 2771环境如下: Centos6.5 Apac ... -
Hadoop2.7.1和Hbase0.98添加LZO压缩
2016-01-04 17:46 26081,执行命令安装一些依赖组件 yum install -y ... -
Hbase设置Snappy压缩测试
2015-12-30 15:31 3453在DT大数据时代,海量数据的存储和分析是一个巨大的挑战,给我 ... -
Hbase1.1.2高可用配置Hmaster容错
2015-11-12 17:05 1499Hbase的Hmaster配置HA相比Hadoop的Name ... -
设置Hadoop+Hbase集群pid文件存储位置
2015-10-20 13:40 2865有时候,我们对运行几 ... -
hadoop2.2生态系统快速安装脚本
2014-09-23 15:08 1988对于使用hadoop进行开发的朋友们,可能要自己搭建一套had ... -
Hadoop2.2.0+Hive0.13+Hbase0.96.2集成
2014-08-06 20:49 1861本篇,散仙主要讲的是使用Hive如何和Hbase集成,Hbas ... -
Hadoop2.2.0+Hbase0.96.2分布式集群搭建
2014-07-23 21:39 1590最近项目有用到Hbase存储数据,由于现在的hadoop 的集 ... -
Java连接Hbase0.96异常
2014-07-14 13:43 2030在Windows上直接使用JAVA API连接Hbase0.9 ... -
Hadoop2.2.0集成Hbase0.96报的一个异常
2014-07-14 11:18 792最近项目抓取的数据,存在Hbase里,所以需要从Hbase里读 ...
相关推荐
总结来说,掌握HBase 0.96版本的Java编程涉及理解HBase的核心概念,如表、列族、行键、时间戳,以及如何通过Java API进行连接、操作数据、管理表和处理故障。同时,了解异步操作、批量操作和监听器机制也是提升HBase...
使用这个jar包,开发者可以构建基于HBase的应用程序,利用Java API进行数据操作。在开发过程中,需要注意的是HBase的API设计是面向列的,与传统的面向行的数据库API有所不同,需要理解如何定义表结构,如何进行增删...
这篇博客“Hbase调用Java API实现批量导入操作”聚焦于如何利用Java编程语言高效地向HBase中批量导入数据。在这个过程中,我们将探讨以下几个关键知识点: 1. **HBase架构**: HBase是基于列族的存储模型,数据被...
在本文中,我们将深入探讨如何使用Java API连接到运行在虚拟机上的HBase数据库,并进行相关的数据操作。HBase是一个分布式的、版本化的、基于列族的NoSQL数据库,它构建于Hadoop之上,适用于处理大规模的数据存储和...
在Java API中访问HBase是大数据处理中常见的一项任务,HBase作为一个分布式、列式存储的NoSQL数据库,常用于海量数据的实时读写。...通过这些基本操作,你将能够使用Java API高效地访问和管理HBase中的数据。
**Java API** 是Java编程语言提供的应用程序接口,允许开发者使用Java来访问和操作Hadoop和HBase的功能。对于Hadoop,Java API主要包括`org.apache.hadoop.mapreduce`包下的类,如Job、Mapper、Reducer等,用于实现...
在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...
在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作。 具体流程如下: 1.创建项目 2.获取jar包到项目的lib目录下(这边试用的事...
在本文中,我们将深入探讨如何使用Java通过Thrift2接口操作HBase数据库。HBase是一个分布式、可扩展的大数据存储系统,它构建于Hadoop之上,支持实时读写。Thrift是一个轻量级的框架,用于跨语言服务开发,允许不同...
在本文中,我们将深入探讨如何使用Scala API操作HBase数据库。HBase是一个分布式、面向列的NoSQL数据库,它构建于Hadoop之上,提供实时访问大量数据的能力。Scala是一种强大的函数式编程语言,与Java虚拟机(JVM)...
Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-...这些操作都是基于 Hbase 的 API 实现的。同时,也介绍了使用 Filter 对象进行条件查询的方法。
HBase基本操作 增删改查 java代码 要使用须导入对应的jar包
本篇文章将深入探讨如何在集群环境中使用Java API来操作HBase 0.98版本,主要包括创建表格、删除表格等基本操作。 首先,为了在Java中调用HBase的API,我们需要添加HBase的依赖库到项目中。对于HBase 0.98,你需要...
- **Region Server**:HBase将数据分布在多个Region Server上,Java API允许开发者管理这些服务器并执行跨服务器的操作。 - **Scan和Get操作**:通过API,可以执行扫描(Scans)来获取多行数据,或者使用Get方法...
在Java中操作HBase,我们需要使用HBase的Java客户端API。首先,确保引入了所有必要的jar包,这些包通常包括hbase-client、hbase-common、hadoop-client等。这些依赖可以使用Maven或Gradle等构建工具管理,或者直接在...
该案例中主要使用MapReduce作为处理组件进行数据处理,实现的案例有如通过javaapi实现hbase数据写入hdfs、hbase表数据复制到另一个表中等操作 对应(《HBase分布式存储系统应用》胡鑫喆 张志刚著)教材中案例
本教程将详细介绍如何使用Java API来创建和删除HBase表,并针对不使用Maven的初学者提供必要的jar包支持。 首先,你需要在项目中引入HBase的客户端库。由于这里没有使用Maven,你需要手动下载并添加以下jar包到项目...
本项目通过实际示例,展示了如何使用 Java API 进行 HBase 的基本操作,包括创建表、插入数据、查询数据以及删除数据等。 首先,要与 HBase 进行交互,我们需要引入 HBase 客户端库。在 Maven 工程中,可以在 `pom....