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 进行建表、删表以及对数据进行增删改查 一、Hbase 简介 Hbase 是一个开源的、分布式的、基于 column-family 的 NoSQL 数据库。它是基于 Hadoop 的,使用 HDFS 作为其存储层。Hbase 提供了高性能、...
下面将详细介绍如何在Eclipse中搭建HBase开发环境,并对HBase进行建表、增、删、改、查等操作。 一、环境准备 首先需要确定HBase和Hadoop的版本是否一致,为了避免版本不兼容问题。在本例中,我们使用的HBase版本...
java调用hbase数据库,完成对hbase常用api的封装和对hbase数据库的增删改查等操作,经测试绝对可用。
Java链接HBase进行增删改查操作是大数据领域常见的任务,尤其在处理大规模分布式存储时。HBase,作为Apache Hadoop生态系统的一部分,是一个基于列族的NoSQL数据库,提供了高性能、高可扩展性的数据存储解决方案。这...
在HBase这个分布式列式数据库中,Java API是开发者常用的一种接口来操作HBase,包括创建表、插入数据、查询数据以及实现分页等操作。本文将深入探讨如何使用HBase Java API进行数据访问和分页查询。 首先,我们要...
HBase的设计目标是对超大型表进行随机、实时读写操作。而HDFS则是Hadoop的核心组件,作为一个分布式文件系统,它能够跨多台服务器存储和处理大量数据。 在Java中操作HBase,我们需要使用HBase的Java客户端API。首先...
在Java中操作HBase是一种常见的任务,特别是在大数据处理和存储的场景中。HBase是一个分布式的、基于列族的NoSQL数据库,它构建在Hadoop之上,提供了高性能、低延迟的数据存储和访问能力。本教程将详细介绍如何使用...
HBase基本操作 增删改查 java代码 要使用须导入对应的jar包
通过编写MapReduce作业,可以对HBase表进行大规模的数据导入和导出,或者执行复杂的数据分析任务。 在实际使用中,选择哪个客户端工具取决于具体的需求和使用场景。例如,如果需要快速原型开发或简单的数据操作,...
在本文档中,我们将深入探讨如何使用Java API与HBase数据库进行交互,特别是关于如何创建表、修改表结构以及批量插入数据。HBase是Apache的一个分布式、可扩展的大数据存储系统,它基于谷歌的Bigtable设计,适用于...
1. **HBase客户端API**:这是Java-HBase开发包的核心,提供了一组Java接口和类,用于连接到HBase集群,创建表,插入、查询和更新数据。例如,`HTableInterface` 和 `HBaseAdmin` 接口,以及 `Put`、`Get` 和 `Scan` ...
4. 表管理:支持HBase的建表和删除操作,这需要调用HBase的Admin API,完成表的创建、删除、修改等管理任务。 五、安全性与优化 1. 认证授权:为了保护数据安全,需要在HBase和SpringBoot应用中实现认证和授权机制...
在Java中操作HBase数据库,通常需要通过HBase的Java API来实现数据的增、删、改、查等基本操作。HBase是一个分布式、版本化的NoSQL数据库,它基于Google的Bigtable设计,并且构建在Hadoop之上。下面将详细解释如何...
在本文中,我们将深入探讨如何使用Java通过Thrift2接口操作HBase数据库。HBase是一个分布式、可扩展的大数据存储系统,它构建于Hadoop之上,支持实时读写。Thrift是一个轻量级的框架,用于跨语言服务开发,允许不同...
HBase分页查询实现 HBase作为一个NoSQL数据库,具有高性能、...本文讲解了如何使用Java语言实现HBase的分页查询,并介绍了HBase的配置、HTablePool、获取HBase表、字节数组的转换、Filter和ResultScanner等知识点。
因为面向列的特点,Hbase只能单单地以rowkey为主键作查询,而无法对表进行多维查询和join操作,并且查询通常都是全表扫描,耗费资源较大,查询效率较低。类比于传统型数据库里的一些查询方式,本文对Hbase的存储原理进行了...
本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和数据,以及HBase表的创建。 首先,我们需要了解MySQL和HBase的基本概念。MySQL是一种关系型数据库管理系统,它基于ACID(原子性、一致性、隔离性和...
在本文中,我们将深入探讨如何使用Java API进行HBase的操作,包括增、删、改、查等基本功能。HBase是一个分布式、版本化的NoSQL数据库,它构建在Hadoop文件系统(HDFS)之上,提供了高可靠性、高性能、可伸缩的数据...
- 执行操作:通过客户端对象的方法,如`get`, `scan`等,对HBase表进行读取操作。 - 处理结果:解析返回的数据,通常是`TResult`对象,从中获取HBase行和列族的信息。 - 关闭资源:确保在操作完成后关闭连接,...