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

Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

阅读更多

1、搭建环境

  新建JAVA项目,添加的包有:

   有关Hadoop的hadoop-core-0.20.204.0.jar

   有关Hbase的hbase-0.90.4.jar、hbase-0.90.4-tests.jar以及Hbase资源包中lib目录下的所有jar包

 

 

001 import java.io.IOException;
002 import java.util.ArrayList;
003 import java.util.List;
004   
005 import org.apache.hadoop.conf.Configuration;
006 import org.apache.hadoop.hbase.HBaseConfiguration;
007 import org.apache.hadoop.hbase.HColumnDescriptor;
008 import org.apache.hadoop.hbase.HTableDescriptor;
009 import org.apache.hadoop.hbase.KeyValue;
010 import org.apache.hadoop.hbase.MasterNotRunningException;
011 import org.apache.hadoop.hbase.ZooKeeperConnectionException;
012 import org.apache.hadoop.hbase.client.Delete;
013 import org.apache.hadoop.hbase.client.Get;
014 import org.apache.hadoop.hbase.client.HBaseAdmin;
015 import org.apache.hadoop.hbase.client.HTable;
016 import org.apache.hadoop.hbase.client.HTablePool;
017 import org.apache.hadoop.hbase.client.Put;
018 import org.apache.hadoop.hbase.client.Result;
019 import org.apache.hadoop.hbase.client.ResultScanner;
020 import org.apache.hadoop.hbase.client.Scan;
021 import org.apache.hadoop.hbase.filter.Filter;
022 import org.apache.hadoop.hbase.filter.FilterList;
023 import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
024 import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
025 import org.apache.hadoop.hbase.util.Bytes;
026   
027 public class JinTaoTest {
028   
029     public static Configuration configuration;
030     static {
031         configuration = HBaseConfiguration.create();
032         configuration.set("hbase.zookeeper.property.clientPort", "2181");
033         configuration.set("hbase.zookeeper.quorum", "192.168.1.100");
034         configuration.set("hbase.master", "192.168.1.100:600000");
035     }
036   
037     public static void main(String[] args) {
038         // createTable("wujintao");
039         // insertData("wujintao");
040         // QueryAll("wujintao");
041         // QueryByCondition1("wujintao");
042         // QueryByCondition2("wujintao");
043         //QueryByCondition3("wujintao");
044         //deleteRow("wujintao","abcdef");
045         deleteByCondition("wujintao","abcdef");
046     }
047   
048       
049     public static void createTable(String tableName) {
050         System.out.println("start create table ......");
051         try {
052             HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);
053             if (hBaseAdmin.tableExists(tableName)) {// 如果存在要创建的表,那么先删除,再创建
054                 hBaseAdmin.disableTable(tableName);
055                 hBaseAdmin.deleteTable(tableName);
056                 System.out.println(tableName + " is exist,detele....");
057             }
058             HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);
059             tableDescriptor.addFamily(new HColumnDescriptor("column1"));
060             tableDescriptor.addFamily(new HColumnDescriptor("column2"));
061             tableDescriptor.addFamily(new HColumnDescriptor("column3"));
062             hBaseAdmin.createTable(tableDescriptor);
063         } catch (MasterNotRunningException e) {
064             e.printStackTrace();
065         } catch (ZooKeeperConnectionException e) {
066             e.printStackTrace();
067         } catch (IOException e) {
068             e.printStackTrace();
069         }
070         System.out.println("end create table ......");
071     }
072   
073       
074     public static void insertData(String tableName) {
075         System.out.println("start insert data ......");
076         HTablePool pool = new HTablePool(configuration, 1000);
077         HTable table = (HTable) pool.getTable(tableName);
078         Put put = new Put("112233bbbcccc".getBytes());// 一个PUT代表一行数据,再NEW一个PUT表示第二行数据,每行一个唯一的ROWKEY,此处rowkey为put构造方法中传入的值
079         put.add("column1".getBytes(), null, "aaa".getBytes());// 本行数据的第一列
080         put.add("column2".getBytes(), null, "bbb".getBytes());// 本行数据的第三列
081         put.add("column3".getBytes(), null, "ccc".getBytes());// 本行数据的第三列
082         try {
083             table.put(put);
084         } catch (IOException e) {
085             e.printStackTrace();
086         }
087         System.out.println("end insert data ......");
088     }
089   
090       
091     public static void dropTable(String tableName) {
092         try {
093             HBaseAdmin admin = new HBaseAdmin(configuration);
094             admin.disableTable(tableName);
095             admin.deleteTable(tableName);
096         } catch (MasterNotRunningException e) {
097             e.printStackTrace();
098         } catch (ZooKeeperConnectionException e) {
099             e.printStackTrace();
100         } catch (IOException e) {
101             e.printStackTrace();
102         }
103   
104     }
105       
106      public static void deleteRow(String tablename, String rowkey)  {
107         try {
108             HTable table = new HTable(configuration, tablename);
109             List list = new ArrayList();
110             Delete d1 = new Delete(rowkey.getBytes());
111             list.add(d1);
112               
113             table.delete(list);
114             System.out.println("删除行成功!");
115               
116         } catch (IOException e) {
117             e.printStackTrace();
118         }
119           
120   
121     }
122   
123        
124      public static void deleteByCondition(String tablename, String rowkey)  {
125             //目前还没有发现有效的API能够实现根据非rowkey的条件删除这个功能能,还有清空表全部数据的API操作
126   
127     }
128   
129   
130       
131     public static void QueryAll(String tableName) {
132         HTablePool pool = new HTablePool(configuration, 1000);
133         HTable table = (HTable) pool.getTable(tableName);
134         try {
135             ResultScanner rs = table.getScanner(new Scan());
136             for (Result r : rs) {
137                 System.out.println("获得到rowkey:" + new String(r.getRow()));
138                 for (KeyValue keyValue : r.raw()) {
139                     System.out.println("列:" + new String(keyValue.getFamily())
140                             + "====值:" + new String(keyValue.getValue()));
141                 }
142             }
143         } catch (IOException e) {
144             e.printStackTrace();
145         }
146     }
147   
148       
149     public static void QueryByCondition1(String tableName) {
150   
151         HTablePool pool = new HTablePool(configuration, 1000);
152         HTable table = (HTable) pool.getTable(tableName);
153         try {
154             Get scan = new Get("abcdef".getBytes());// 根据rowkey查询
155             Result r = table.get(scan);
156             System.out.println("获得到rowkey:" + new String(r.getRow()));
157             for (KeyValue keyValue : r.raw()) {
158                 System.out.println("列:" + new String(keyValue.getFamily())
159                         + "====值:" + new String(keyValue.getValue()));
160             }
161         } catch (IOException e) {
162             e.printStackTrace();
163         }
164     }
165   
166       
167     public static void QueryByCondition2(String tableName) {
168   
169         try {
170             HTablePool pool = new HTablePool(configuration, 1000);
171             HTable table = (HTable) pool.getTable(tableName);
172             Filter filter = new SingleColumnValueFilter(Bytes
173                     .toBytes("column1"), null, CompareOp.EQUAL, Bytes
174                     .toBytes("aaa")); // 当列column1的值为aaa时进行查询
175             Scan s = new Scan();
176             s.setFilter(filter);
177             ResultScanner rs = table.getScanner(s);
178             for (Result r : rs) {
179                 System.out.println("获得到rowkey:" + new String(r.getRow()));
180                 for (KeyValue keyValue : r.raw()) {
181                     System.out.println("列:" + new String(keyValue.getFamily())
182                             + "====值:" + new String(keyValue.getValue()));
183                 }
184             }
185         } catch (Exception e) {
186             e.printStackTrace();
187         }
188   
189     }
190   
191       
192     public static void QueryByCondition3(String tableName) {
193   
194         try {
195             HTablePool pool = new HTablePool(configuration, 1000);
196             HTable table = (HTable) pool.getTable(tableName);
197   
198             List<Filter> filters = new ArrayList<Filter>();
199   
200             Filter filter1 = new SingleColumnValueFilter(Bytes
201                     .toBytes("column1"), null, CompareOp.EQUAL, Bytes
202                     .toBytes("aaa"));
203             filters.add(filter1);
204   
205             Filter filter2 = new SingleColumnValueFilter(Bytes
206                     .toBytes("column2"), null, CompareOp.EQUAL, Bytes
207                     .toBytes("bbb"));
208             filters.add(filter2);
209   
210             Filter filter3 = new SingleColumnValueFilter(Bytes
211                     .toBytes("column3"), null, CompareOp.EQUAL, Bytes
212                     .toBytes("ccc"));
213             filters.add(filter3);
214   
215             FilterList filterList1 = new FilterList(filters);
216   
217             Scan scan = new Scan();
218             scan.setFilter(filterList1);
219             ResultScanner rs = table.getScanner(scan);
220             for (Result r : rs) {
221                 System.out.println("获得到rowkey:" + new String(r.getRow()));
222                 for (KeyValue keyValue : r.raw()) {
223                     System.out.println("列:" + new String(keyValue.getFamily())
224                             + "====值:" + new String(keyValue.getValue()));
225                 }
226             }
227             rs.close();
228   
229         } catch (Exception e) {
230             e.printStackTrace();
231         }
232   
233     }
234   
235 }
分享到:
评论

相关推荐

    Java操作Hbase进行建表、删表以及对数据进行增删改查

    Java 操作 Hbase 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...

    eclipse构建HBase开发环境并运行实例对Hbase建表增删改查

    下面将详细介绍如何在Eclipse中搭建HBase开发环境,并对HBase进行建表、增、删、改、查等操作。 一、环境准备 首先需要确定HBase和Hadoop的版本是否一致,为了避免版本不兼容问题。在本例中,我们使用的HBase版本...

    java调用hbase实现数据库的增删改查

    java调用hbase数据库,完成对hbase常用api的封装和对hbase数据库的增删改查等操作,经测试绝对可用。

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

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

    hbase java api 访问 查询、分页

    在HBase这个分布式列式数据库中,Java API是开发者常用的一种接口来操作HBase,包括创建表、插入数据、查询数据以及实现分页等操作。本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要...

    java操作Hbase之从Hbase中读取数据写入hdfs中源码

    HBase的设计目标是对超大型表进行随机、实时读写操作。而HDFS则是Hadoop的核心组件,作为一个分布式文件系统,它能够跨多台服务器存储和处理大量数据。 在Java中操作HBase,我们需要使用HBase的Java客户端API。首先...

    java操作Hbase之实现表的创建删除源码

    在Java中操作HBase是一种常见的任务,特别是在大数据处理和存储的场景中。HBase是一个分布式的、基于列族的NoSQL数据库,它构建在Hadoop之上,提供了高性能、低延迟的数据存储和访问能力。本教程将详细介绍如何使用...

    HBase基本操作 Java代码

    HBase基本操作 增删改查 java代码 要使用须导入对应的jar包

    hbase用于查询客户端工具

    通过编写MapReduce作业,可以对HBase表进行大规模的数据导入和导出,或者执行复杂的数据分析任务。 在实际使用中,选择哪个客户端工具取决于具体的需求和使用场景。例如,如果需要快速原型开发或简单的数据操作,...

    Hbase笔记 —— 利用JavaAPI的方式操作Hbase数据库(往hbase的表中批量插入数据).pdf

    在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...

    java-hbase开发包

    1. **HBase客户端API**:这是Java-HBase开发包的核心,提供了一组Java接口和类,用于连接到HBase集群,创建表,插入、查询和更新数据。例如,`HTableInterface` 和 `HBaseAdmin` 接口,以及 `Put`、`Get` 和 `Scan` ...

    hbase数据可视化系统

    4. 表管理:支持HBase的建表和删除操作,这需要调用HBase的Admin API,完成表的创建、删除、修改等管理任务。 五、安全性与优化 1. 认证授权:为了保护数据安全,需要在HBase和SpringBoot应用中实现认证和授权机制...

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

    在Java中操作HBase数据库,通常需要通过HBase的Java API来实现数据的增、删、改、查等基本操作。HBase是一个分布式、版本化的NoSQL数据库,它基于Google的Bigtable设计,并且构建在Hadoop之上。下面将详细解释如何...

    java代码使用thrift2操作hbase示例

    在本文中,我们将深入探讨如何使用Java通过Thrift2接口操作HBase数据库。HBase是一个分布式、可扩展的大数据存储系统,它构建于Hadoop之上,支持实时读写。Thrift是一个轻量级的框架,用于跨语言服务开发,允许不同...

    hbase分页查询实现.pdf

    HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、...本文讲解了如何使用Java语言实现HBase的分页查询,并介绍了HBase的配置、HTablePool、获取HBase表、字节数组的转换、Filter和ResultScanner等知识点。

    基于Hbase的大数据查询优化

    因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费资源较大,查询效率较低。类比于传统型数据库里的一些查询方式,本文对Hbase的存储原理进行了...

    java代码将mysql表数据导入HBase表

    本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和数据,以及HBase表的创建。 首先,我们需要了解MySQL和HBase的基本概念。MySQL是一种关系型数据库管理系统,它基于ACID(原子性、一致性、隔离性和...

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

    在本文中,我们将深入探讨如何使用Java API进行HBase的操作,包括增、删、改、查等基本功能。HBase是一个分布式、版本化的NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,提供了高可靠性、高性能、可伸缩的数据...

    java 通过thrift-0.9.1读取hbase表数据

    - 执行操作:通过客户端对象的方法,如`get`, `scan`等,对HBase表进行读取操作。 - 处理结果:解析返回的数据,通常是`TResult`对象,从中获取HBase行和列族的信息。 - 关闭资源:确保在操作完成后关闭连接,...

Global site tag (gtag.js) - Google Analytics