1.任务:

  • 列出HBase所有的表的相关信息,例如表名;

3. 编程完成以下指定功能(教材P92下):

(1)createTable(String tableName, String[] fields)创建表。

(2)addRecord(String tableName, String row, String[] fields, String[] values)

(3)scanColumn(String tableName, String column)

(4)modifyData(String tableName, String row, String column)

(5)deleteRow(String tableName, String row)

代码如下:

package com.test;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.*;

import java.util.ArrayList;
import java.util.List;
class HBaseTest1 {
private static final String TABLE_NAME = "stu";
private static final String FAMILY_NAME = "f1";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_AGE = "age";
private static final String ROW_KEY1 = "r1";
private static final String ROW_KEY2 = "r2";
public static void main(String[] args) throws Exception {
//构造能够访问HBase的configuration对象
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.rootdir", "hdfs://h2single:9000/hbase");
conf.set("hbase.zookeeper.quorum", "h2sliver113:2181");
//HBaseAdmin是对HBase进行ddl操作的核心类
HBaseAdmin hBaseAdmin = new HBaseAdmin(conf);
if(!hBaseAdmin.tableExists(TABLE_NAME)){
HTableDescriptor htableDescriptor = new HTableDescriptor(TABLE_NAME);
htableDescriptor.addFamily(new HColumnDescriptor(FAMILY_NAME));
hBaseAdmin.createTable(htableDescriptor);
System.out.println("table create success");
}else{
System.out.println("table exists");
}
//使用HTable可以对HBase的表中的数据进行增删改查
HTable hTable = new HTable(conf, TABLE_NAME);
// 增加数据
List<Put> putList = new ArrayList<Put>();
Put put1 = new Put(ROW_KEY1.getBytes());
put1.add(FAMILY_NAME.getBytes(), COLUMN_NAME.getBytes(), "zhangsan".getBytes());
put1.add(FAMILY_NAME.getBytes(), COLUMN_AGE.getBytes(), "23".getBytes());
putList.add(put1);
Put put2 = new Put(ROW_KEY2.getBytes());
put2.add(FAMILY_NAME.getBytes(), COLUMN_NAME.getBytes(), "lisi".getBytes());
put2.add(FAMILY_NAME.getBytes(), COLUMN_AGE.getBytes(), "24".getBytes());
putList.add(put2);
hTable.put(putList);
// 根据rowkey得到记录后 获取此记录对应的列信息
Get get = new Get(ROW_KEY1.getBytes());
Result get1 = hTable.get(get);
String name1 = new String(get1.getValue(FAMILY_NAME.getBytes(), COLUMN_NAME.getBytes()));
String age1 = new String(get1.getValue(FAMILY_NAME.getBytes(), COLUMN_AGE.getBytes()));
//System.out.println(get1+"\t"+name1+"\t"+age1);
// 指定行范围来查询多条记录
Scan scan = new Scan();
scan.setStartRow(ROW_KEY1.getBytes());
scan.setStopRow(ROW_KEY2.getBytes());
ResultScanner scanner = hTable.getScanner(scan);
for (Result result : scanner) {
String rowKey = new String(result.getRow());
String name = new String(result.getValue(FAMILY_NAME.getBytes(), COLUMN_NAME.getBytes()));
String age = new String(result.getValue(FAMILY_NAME.getBytes(), COLUMN_AGE.getBytes()));
System.out.println(rowKey+"\t"+name+"\t"+age1);
}
// 根据rowkey删除记录
Delete delete = new Delete(ROW_KEY1.getBytes());
hTable.delete(delete);
// 删除表
hBaseAdmin.disableTable(TABLE_NAME);
hBaseAdmin.deleteTable(TABLE_NAME);
}

最新文章

  1. 搭建公司内部的NuGet Server
  2. java并发编程(六)Runnable和Thread实现多线程的区别
  3. .Net Framework 4.0 内部排序探索
  4. LA 3027 Corporative Network
  5. [转载+原创]Emgu CV on C# (一) —— Emgu CV on Visual C# 2010
  6. CSS中Padding的用法
  7. PHP magic_quotes_gpc
  8. 第12届北师大校赛热身赛第二场 A.不和谐的长难句1
  9. 我的Android进阶之旅------&gt;Android安全退出应用程序的几种方式
  10. BZOJ 1096
  11. Cocos2dx 3.0 过渡篇(三十)灰机还是3D好(Sprite3D)
  12. Hibernate之AbstractEntityPersister
  13. 定制Maven的ArcheType
  14. 遇到ANDROID “call to opengl es api with no current context”错误
  15. 《算法导论》学习总结 — XX.第22章 图的基本算法
  16. 动手写IL到Lua的翻译器——准备
  17. 工作流引擎--swamp
  18. sql server和oracle数据库
  19. SSH无密码登录:只需两个简单步骤 (Linux)
  20. 使用Reflector反编译并提取源代码

热门文章

  1. wpf 自定义Messagebox时,对话框显示不居中问题
  2. CAD中相交线怎样打断?CAD打断相交线步骤
  3. Mamba安装
  4. https原理(四)双向实践(java客户端+tcp代理)
  5. UltiSnips安装及设置
  6. abap sql中进行除法操作
  7. 集成GIT仓库
  8. sql server 常用高级查询sql
  9. Matchmaker Server 像素流送配对服务器
  10. 浅谈前端自动化构建(Grunt、gulp。webpack)