概述
一、
几个主要 Hbase API 类和数据模型之间的对应关系:
1、 HBaseAdmin
关系: org.apache.hadoop.hbase.client.HBaseAdmin
作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删 除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。
2、 HBaseConfiguration
关系: org.apache.hadoop.hbase.HBaseConfiguration
作用:对 HBase 进行配置
3、 HTableDescriptor
关系: org.apache.hadoop.hbase.HTableDescriptor
作用:包含了表的名字极其对应表的列族
4、 HColumnDescriptor
关系: org.apache.hadoop.hbase.HColumnDescriptor
作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添 加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。
列族被删除的时候,列族里面的数据也会同时被删除。
5、 HTable
关系: org.apache.hadoop.hbase.client.HTable
作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。
6、 Put
关系: org.apache.hadoop.hbase.client.Put
作用:用来对单个行执行添加操作
7、 Get
关系: org.apache.hadoop.hbase.client.Get
作用:用来获取单个行的相关信息
8、 Result
关系: org.apache.hadoop.hbase.client.Result
作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值 或者各种 Map 结构( key-value 对)
二、具体增删改查 代码具体实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
|
package
HbaseDome;
import
java.util.List;
import
org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.hbase.Cell;
import
org.apache.hadoop.hbase.HBaseConfiguration;
import
org.apache.hadoop.hbase.HColumnDescriptor;
import
org.apache.hadoop.hbase.HTableDescriptor;
import
org.apache.hadoop.hbase.KeyValue;
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.protobuf.generated.ZooKeeperProtos.Table;
import
org.apache.hadoop.hbase.util.Bytes;
public
class
Hbasedome
implements
HBaseDemoInterface{
static
Configuration conf =
null
;
private
static
final
String ZKconnect=
"192.168.123.212:2181,192.168.123.213:2181,192.168.123.214:2181"
;
static
{
conf=HBaseConfiguration.create();
conf.set(
"hbase.zookeeper.quorum"
, ZKconnect);
}
// static String tableName="student";
// static String[] family={"lie01","lie02"};
public
static
void
main(String[] args) {
Hbasedome a =
new
Hbasedome();
String tableName=
"student11"
;
String[] family={
"lie01"
,
"lie02"
};
try
{
HTableDescriptor htds =
new
HTableDescriptor(tableName);
for
(
int
z=
0
;z<family.length;z++){
HColumnDescriptor h=
new
HColumnDescriptor(family[z]);
htds.addFamily(h);
}
// a.descTable("table03");
// a.createTable(tableName, htds);
// a.descTable("table03");
// a.getAllTables();
// a.createTable(tableName,family);
// a.getResult("table03", "usr001");
// a.dropTable("user1");
// a.getAllTables();
// a.putData("table03", "usr005", "liezu01", "name", "liu");
// a.getResult("table03", "usr001");
// a.getResultScann("table03");
// a.getResultScann("table03","");
Result result = a.getResult(
"table03"
,
"usr001"
);
System.out.println(result.toString());
List<Cell> cells = result.listCells();
for
(
int
i =
0
; i < cells.size(); i++) {
Cell cell = cells.get(i);
System.out.println(cell.toString());
// printCell(cell);
}
// List<KeyValue> list = result.list();
// for (int i = 0; i < list.size(); i++) {
// KeyValue kv = list.get(i);
// printKeyValye(kv);
// }
}
catch
(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public
static
void
printKeyValye(KeyValue kv) {
System.out.println(Bytes.toString(kv.getRow()) +
"t"
+ Bytes.toString(kv.getFamily()) +
"t"
+ Bytes.toString(kv.getQualifier()) +
"t"
+ Bytes.toString(kv.getValue()) +
"t"
+ kv.getTimestamp());
}
public
static
void
printCell(Cell cell) {
System.out.println(Bytes.toString(cell.getRow()) +
"t"
+ Bytes.toString(cell.getFamily()) +
"t"
+ Bytes.toString(cell.getQualifier()) +
"t"
+ Bytes.toString(cell.getValue()) +
"t"
+ cell.getTimestamp());
}
//创建表
@Override
public
void
createTable(String tableName, String[] family)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
HTableDescriptor desc =
new
HTableDescriptor(tableName);
for
(
int
i=
0
;i<family.length;i++){
desc.addFamily(
new
HColumnDescriptor(family[i]));
System.out.println(
"11111111111"
+family[i]);
}
if
(admin.tableExists(tableName)){
System.out.println(
"表已经存在,别瞎输行吗"
);
// System.exit(0);
}
else
{
admin.createTable(desc);
System.out.println(
"表创建成功"
);
}
}
//创建表
@Override
public
void
createTable(String tableName, HTableDescriptor htds)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
boolean
tableExists1 = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists1 ?
"表已存在"
:
"表不存在"
);
admin.createTable(htds);
boolean
tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ?
"创建表成功"
:
"创建失败"
);
}
@Override
public
void
descTable(String tableName)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
HTable table=
new
HTable(conf, tableName);
HTableDescriptor desc =table.getTableDescriptor();
HColumnDescriptor[] columnFamilies = desc.getColumnFamilies();
for
(HColumnDescriptor t:columnFamilies){
System.out.println(Bytes.toString(t.getName()));
}
}
这种方式是替换该表tableName的所有列簇
@Override
public
void
modifyTable(String tableName)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
HTableDescriptor htd =
new
HTableDescriptor(TableName.valueOf(tableName));
htd.addFamily(
new
HColumnDescriptor(Bytes.toBytes(
"cf3"
)));
htd.addFamily(
new
HColumnDescriptor(Bytes.toBytes(
"cf2"
)));
admin.modifyTable(tableName, htd);
// 删除该表tableName当中的特定的列簇
// admin.deleteColumn(tableName, "cf3");
System.out.println(
"修改成功"
);
}
@Override
public
void
getAllTables()
throws
Exception {
HBaseAdmin admin =
new
HBaseAdmin(conf);
String[] tableNames = admin.getTableNames();
for
(
int
i=
0
;i<tableNames.length;i++){
System.out.println(tableNames[i]);
}
}
//更新数据 插入数据
@Override
public
void
putData(String tableName, String rowKey, String familyName, String columnName, String value)
throws
Exception {
HTable htable=
new
HTable(conf, Bytes.toBytes(tableName));
Put put=
new
Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
htable.put(put);
}
//为表添加数据
@Override
public
void
addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2,
String[] value2)
throws
Exception {
Put put=
new
Put(Bytes.toBytes(rowKey));
HTable htable=
new
HTable(conf, Bytes.toBytes(tableName));
HColumnDescriptor[] columnFamilies = htable.getTableDescriptor().getColumnFamilies();
for
(
int
i=
0
;i<=columnFamilies.length;i++){
String nameAsString = columnFamilies[i].getNameAsString();
if
(nameAsString.equals(
"lie01"
)){
for
(
int
j=
0
;j<column1.length;j++){
put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column1[j]),Bytes.toBytes(value1[j]));
}
}
if
(nameAsString.equals(
"lie02"
)){
for
(
int
j=
0
;j<column2.length;j++){
put.add(Bytes.toBytes(nameAsString), Bytes.toBytes(column2[j]),Bytes.toBytes(value2[j]));
}
}
}
htable.put(put);
System.out.println(
"addData ok!"
);
}
//根据rowkey 查询
@Override
public
Result getResult(String tableName, String rowKey)
throws
Exception {
Get get=
new
Get(Bytes.toBytes(rowKey));
HTable htable=
new
HTable(conf, Bytes.toBytes(tableName));
Result result=htable.get(get);
// for(KeyValue k:result.list()){
// System.out.println(Bytes.toString(k.getFamily()));
// System.out.println(Bytes.toString(k.getQualifier()));
// System.out.println(Bytes.toString(k.getValue()));
// System.out.println(k.getTimestamp());
// }
return
result;
}
//查询指定的某列
@Override
public
Result getResult(String tableName, String rowKey, String familyName, String columnName)
throws
Exception {
Get get=
new
Get(Bytes.toBytes(rowKey));
HTable htable=
new
HTable(conf, Bytes.toBytes(tableName));
get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
Result result=htable.get(get);
for
(KeyValue k:result.list()){
System.out.println(Bytes.toString(k.getFamily()));
System.out.println(Bytes.toString(k.getQualifier()));
System.out.println(Bytes.toString(k.getValue()));
System.out.println(k.getTimestamp());
}
return
result;
}
//遍历查询表
@Override
public
ResultScanner getResultScann(String tableName)
throws
Exception {
Scan scan=
new
Scan();
ResultScanner rs =
null
;
HTable htable=
new
HTable(conf, tableName);
try
{
rs=htable.getScanner(scan);
for
(Result r: rs){
for
(KeyValue kv:r.list()){
System.out.println(Bytes.toString(kv.getRow()));
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
}
}
finally
{
rs.close();
}
return
rs;
}
@Override
public
ResultScanner getResultScann(String tableName, Scan scan)
throws
Exception {
ResultScanner rs =
null
;
HTable htable=
new
HTable(conf, tableName);
try
{
rs=htable.getScanner(scan);
for
(Result r: rs){
for
(KeyValue kv:r.list()){
System.out.println(Bytes.toString(kv.getRow()));
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
}
}
finally
{
rs.close();
}
return
rs;
}
//查询表中的某一列
@Override
public
Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName)
throws
Exception {
HTable htable=
new
HTable(conf, tableName);
Get get=
new
Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName),Bytes.toBytes(columnName));
Result result=htable.get(get);
for
(KeyValue kv: result.list()){
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
return
result;
}
//查询某列数据的某个版本
@Override
public
Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,
int
versions)
throws
Exception {
HTable htable=
new
HTable(conf, tableName);
Get get =
new
Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
get.setMaxVersions(versions);
Result result=htable.get(get);
for
(KeyValue kv: result.list()){
System.out.println(Bytes.toString(kv.getFamily()));
System.out.println(Bytes.toString(kv.getQualifier()));
System.out.println(Bytes.toString(kv.getValue()));
System.out.println(kv.getTimestamp());
}
return
result;
}
//删除指定某列
@Override
public
void
deleteColumn(String tableName, String rowKey, String falilyName, String columnName)
throws
Exception {
HTable htable=
new
HTable(conf, tableName);
// Delete delete1=new Delete(Bytes.toBytes(rowKey));
Delete de =
new
Delete(Bytes.toBytes(rowKey));
de.deleteColumn(Bytes.toBytes(falilyName), Bytes.toBytes(columnName));
htable.delete(de);
}
//删除指定的某个rowkey
@Override
public
void
deleteColumn(String tableName, String rowKey)
throws
Exception {
HTable htable=
new
HTable(conf, tableName);
Delete de =
new
Delete(Bytes.toBytes(rowKey));
htable.delete(de);
}
//让该表失效
@Override
public
void
disableTable(String tableName)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
admin.disableTable(tableName);
}
//删除表
@Override
public
void
dropTable(String tableName)
throws
Exception {
HBaseAdmin admin=
new
HBaseAdmin(conf);
admin.disableTable(tableName);
admin.deleteTable(tableName);
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
|
package
com.ghgj.hbase.test1610;
import
java.io.IOException;
import
java.util.ArrayList;
import
java.util.Iterator;
import
java.util.List;
import
org.apache.hadoop.conf.Configuration;
import
org.apache.hadoop.hbase.Cell;
import
org.apache.hadoop.hbase.HBaseConfiguration;
import
org.apache.hadoop.hbase.HColumnDescriptor;
import
org.apache.hadoop.hbase.HTableDescriptor;
import
org.apache.hadoop.hbase.KeyValue;
import
org.apache.hadoop.hbase.TableName;
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.util.Bytes;
public
class
HBaseAPIDemo1610
implements
HBaseDemoInterface {
private
static
final
String ROWKEY =
"p001"
;
private
static
final
String ROWKEY2 =
"p002"
;
private
static
final
String FAMILY1 =
"cf1"
;
private
static
final
String FAMILY2 =
"cf2"
;
private
static
final
String KEY =
"name"
;
private
static
final
String VALUE =
"huangbo"
;
private
static
final
String TABLE_NAME =
"person"
;
private
static
final
String[] COLUMN_FAMILY =
new
String[] { FAMILY1, FAMILY2 };
static
Configuration conf =
null
;
static
HBaseAdmin admin =
null
;
static
HTable table =
null
;
static
{
try
{
conf = HBaseConfiguration.create();
conf.set(
"hbase.zookeeper.quorum"
,
"hadoop03:2181,hadoop04:2181,hadoop05:2181"
);
admin =
new
HBaseAdmin(conf);
table =
new
HTable(conf, TABLE_NAME);
}
catch
(IOException e) {
// e.printStackTrace();
System.out.println(
"报错"
);
}
}
public
static
void
main(String[] args)
throws
Exception {
HBaseAPIDemo1610 hbase =
new
HBaseAPIDemo1610();
// 测试创建表
hbase.createTable(TABLE_NAME, COLUMN_FAMILY);
// 测试创建表
HTableDescriptor htd =
new
HTableDescriptor(TableName.valueOf(TABLE_NAME));
for
(
int
i =
0
; i < COLUMN_FAMILY.length; i++) {
HColumnDescriptor cf1 =
new
HColumnDescriptor(COLUMN_FAMILY[i]);
htd.addFamily(cf1);
}
hbase.createTable(TABLE_NAME, htd);
// 查看表属性
hbase.descTable(TABLE_NAME);
// 查询所有的表
hbase.getAllTables();
// 测试修改表
hbase.modifyTable(TABLE_NAME);
// 插入数据
hbase.putData(TABLE_NAME, ROWKEY, FAMILY1, KEY, VALUE);
// 测试插入一堆数据
String[] column1 =
new
String[] {
"name1"
,
"age"
,
"province"
};
String[] value1 =
new
String[] {
"huangbo"
,
"33"
,
"xinjiang"
};
String[] column2 =
new
String[] {
"gender"
};
String[] value2 =
new
String[] {
"male"
};
hbase.addData(TABLE_NAME, ROWKEY2, column1, value1, column2, value2);
// 通过rowkey查询数据
Result result = hbase.getResult(TABLE_NAME, ROWKEY2);
System.out.println(result.toString());
List<KeyValue> list = result.list();
for
(
int
i =
0
; i < list.size(); i++) {
KeyValue kv = list.get(i);
printKeyValye(kv);
}
// 通过rowkey, family, province查询数据
Result result1 = hbase.getResult(TABLE_NAME, ROWKEY2, FAMILY1,
"province"
);
List<Cell> cells = result1.listCells();
for
(
int
i =
0
; i < cells.size(); i++) {
Cell cell = cells.get(i);
printCell(cell);
}
// 扫描全表数据
ResultScanner resultScann = hbase.getResultScann(TABLE_NAME);
printResultScanner(resultScann);
/*Iterator<Result> iterator = resultScann.iterator();
while(iterator.hasNext()){
Result next = iterator.next();
}*/
// 通过scan扫描全表数据,scan中可以加入一些过滤条件
Scan scan =
new
Scan();
scan.setStartRow(Bytes.toBytes(
"user"
));
scan.setStopRow(Bytes.toBytes(
"zk002"
));
scan.setTimeRange(1488252774189l, 1488252774191l);
ResultScanner resultScann1 = hbase.getResultScann(TABLE_NAME, scan);
printResultScanner(resultScann1);
// 两种方式查询最大版本数的hbase数据
Result resultByVersion = hbase.getResultByVersion(TABLE_NAME, ROWKEY, FAMILY1,
"name"
,
3
);
printResult(resultByVersion);
System.out.println(
"-------------------"
);
ResultScanner rs = hbase.getResultByVersion(ROWKEY, FAMILY1,
"name"
,
3
);
printResultScanner(rs);
// 删除表
hbase.dropTable(TABLE_NAME);
}
public
static
void
printResultScanner(ResultScanner resultScann) {
for
(Result result : resultScann) {
printResult(result);
}
}
public
static
void
printResult(Result result) {
List<Cell> cells = result.listCells();
for
(
int
i =
0
; i < cells.size(); i++) {
Cell cell = cells.get(i);
printCell(cell);
}
}
public
static
void
printCell(Cell cell) {
System.out.println(Bytes.toString(cell.getRow()) +
"t"
+ Bytes.toString(cell.getFamily()) +
"t"
+ Bytes.toString(cell.getQualifier()) +
"t"
+ Bytes.toString(cell.getValue()) +
"t"
+ cell.getTimestamp());
}
public
static
void
printKeyValye(KeyValue kv) {
System.out.println(Bytes.toString(kv.getRow()) +
"t"
+ Bytes.toString(kv.getFamily()) +
"t"
+ Bytes.toString(kv.getQualifier()) +
"t"
+ Bytes.toString(kv.getValue()) +
"t"
+ kv.getTimestamp());
}
// create 'tablename','cf1','cf2'
@Override
public
void
createTable(String tableName, String[] family)
throws
Exception {
HTableDescriptor htd =
new
HTableDescriptor(TableName.valueOf(tableName));
for
(
int
i =
0
; i < family.length; i++) {
HColumnDescriptor cf1 =
new
HColumnDescriptor(family[i]);
htd.addFamily(cf1);
}
admin.createTable(htd);
boolean
tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ?
"创建表成功"
:
"创建失败"
);
}
@Override
public
void
createTable(String tableName, HTableDescriptor htd)
throws
Exception {
admin.createTable(htd);
boolean
tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ?
"创建表成功"
:
"创建失败"
);
}
// desc 'person'
@Override
public
void
descTable(String tableName)
throws
Exception {
HTableDescriptor tableDescriptor = table.getTableDescriptor();
HColumnDescriptor[] columnFamilies = tableDescriptor.getColumnFamilies();
for
(HColumnDescriptor hcd : columnFamilies) {
// System.out.println(hcd.toString()+"t");
System.out.println(Bytes.toString(hcd.getName()));
}
}
@Override
public
void
modifyTable(String tableName)
throws
Exception {
// 这种方式是替换该表tableName的所有列簇
HTableDescriptor htd =
new
HTableDescriptor(TableName.valueOf(tableName));
htd.addFamily(
new
HColumnDescriptor(Bytes.toBytes(
"cf3"
)));
htd.addFamily(
new
HColumnDescriptor(Bytes.toBytes(
"cf2"
)));
admin.modifyTable(tableName, htd);
// 删除该表tableName当中的特定的列簇
// admin.deleteColumn(tableName, "cf3");
System.out.println(
"修改成功"
);
}
// list
@Override
public
void
getAllTables()
throws
Exception {
TableName[] listTableNames = admin.listTableNames();
for
(TableName tn : listTableNames) {
System.out.println(tn.toString());
}
}
// put 'tablename','rowkey','familyname:key','value'
@Override
public
void
putData(String tableName, String rowKey, String familyName, String columnName, String value)
throws
Exception {
// HTable table = new HTable(conf, tableName);
Put put =
new
Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName), Bytes.toBytes(value));
table.put(put);
System.out.println(
"插入成功"
);
}
/**
* @param tableName
* 表名
* @param rowKey
* rowkey
* @param column1
* 第一个列簇的key数组
* @param value1
* 第一个列簇的value数组,key数组和value数组长度必须一样
* @param column2
* 第二列簇的key数组
* @param value2
* 第二个列簇的values数组, 同上同理
* @throws Exception
*/
@Override
public
void
addData(String tableName, String rowKey, String[] column1, String[] value1, String[] column2, String[] value2)
throws
Exception {
List<Put> puts =
new
ArrayList<Put>();
for
(
int
i =
0
; i < column1.length; i++) {
Put put =
new
Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(FAMILY1), Bytes.toBytes(column1[i]), Bytes.toBytes(value1[i]));
puts.add(put);
}
for
(
int
i =
0
; i < column2.length; i++) {
Put put =
new
Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(FAMILY2), Bytes.toBytes(column2[i]), Bytes.toBytes(value2[i]));
puts.add(put);
}
table.put(puts);
System.out.println(
"插入一堆数据成功"
);
}
// get 'tablename','rowkey'
@Override
public
Result getResult(String tableName, String rowKey)
throws
Exception {
Get get =
new
Get(Bytes.toBytes(rowKey));
Result result = table.get(get);
return
result;
}
@Override
public
Result getResult(String tableName, String rowKey, String familyName, String columnName)
throws
Exception {
Get get =
new
Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
Result result = table.get(get);
return
result;
}
@Override
public
ResultScanner getResultScann(String tableName)
throws
Exception {
Scan scan =
new
Scan();
ResultScanner scanner = table.getScanner(scan);
// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY2));
// ResultScanner scanner = table.getScanner(Bytes.toBytes(FAMILY1),
// Bytes.toBytes("name1"));
return
scanner;
}
@Override
public
ResultScanner getResultScann(String tableName, Scan scan)
throws
Exception {
return
table.getScanner(scan);
}
@Override
public
Result getResultByColumn(String tableName, String rowKey, String familyName, String columnName)
throws
Exception {
return
null
;
}
// get 'person','p001',{COLUMNS => 'cf1:name', VERSIONS => 3}
@Override
public
Result getResultByVersion(String tableName, String rowKey, String familyName, String columnName,
int
versions)
throws
Exception {
Get get =
new
Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
get.setMaxVersions(versions);
Result result = table.get(get);
return
result;
}
public
ResultScanner getResultByVersion(String rowKey, String familyName, String columnName,
int
versions)
throws
Exception {
Scan scan =
new
Scan(Bytes.toBytes(rowKey), Bytes.toBytes(rowKey));
scan.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
scan.setMaxVersions(versions);
ResultScanner scanner = table.getScanner(scan);
return
scanner;
}
@Override
public
void
deleteColumn(String tableName, String rowKey, String falilyName, String columnName)
throws
Exception {
}
@Override
public
void
deleteColumn(String tableName, String rowKey)
throws
Exception {
}
@Override
public
void
disableTable(String tableName)
throws
Exception {
admin.disableTable(tableName);
}
@Override
public
void
dropTable(String tableName)
throws
Exception {
try
{
admin.deleteTable(tableName);
}
catch
(Exception e) {
// e.printStackTrace();
disableTable(tableName);
admin.deleteTable(tableName);
System.out.println(
"ssssssss"
);
}
finally
{
boolean
tableExists = admin.tableExists(Bytes.toBytes(tableName));
System.out.println(tableExists ?
"删除失败"
:
"删除成功"
);
}
}
}
|
最后
以上就是热心星月为你收集整理的Hbase(六) hbase Java API的全部内容,希望文章能够帮你解决Hbase(六) hbase Java API所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复