Hbase操作与编程使用
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);
}
Hbase操作与编程使用的更多相关文章
- HBase & thrift & C++编程
目录 目录 1 1. 前言 1 2. 启动和停止thrift2 1 2.1. 启动thrift2 1 2.2. 停止thrift2 1 2.3. 启动参数 2 3. hbase.thrift 2 3. ...
- 实验3- 熟悉常用的 HBase 操作
石家庄铁道大学信息科学与技术学院 实验报告 2018年----2019年 第一学期 题目: 熟悉常用的 HBase ...
- iOS多线程拾贝------操作巨人编程
iOS多线程拾贝------操作巨人编程 多线程 基本 实现方案:pthread - NSThread - GCD - NSOperation Pthread 多平台,可移植 c语言,要程序员管理生命 ...
- HBase操作(Shell与Java API)
版权声明:本文为博主原创文章,未经博主允许不得转载. 转: http://blog.csdn.net/u013980127/article/details/52443155 下面代码在Hado ...
- Oracle数据迁移至HBase操作记录
Oracle数据迁移至HBase操作记录 @(HBase) 近期需要把Oracle数据库中的十几张表T级别的数据迁移至HBase中,过程中遇到了许多苦难和疑惑,在此记录一下希望能帮到一些有同样需求的兄 ...
- Storm实时计算:流操作入门编程实践
转自:http://shiyanjun.cn/archives/977.html Storm实时计算:流操作入门编程实践 Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比 ...
- 常用HBase操作
HBase是一个分布式.面向列的数据库,可以用来存储非结构化和半结构化的松散数据,具有高可靠.高性能.面向列.可伸缩的特性.通过行键(RowKey).列族(ColumnFamily).列(Column ...
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
两篇讲的不错文章 http://www.cnblogs.com/nexiyi/p/hbase_shell.html http://blog.csdn.net/u010967382/article/de ...
- HBase篇--HBase操作Api和Java操作Hbase相关Api
一.前述. Hbase shell启动命令窗口,然后再Hbase shell中对应的api命令如下. 二.说明 Hbase shell中删除键是空格+Ctrl键. 三.代码 1.封装所有的API pa ...
- 熟悉常用的HBase操作,编写MapReduce作业
1. 以下关系型数据库中的表和数据,要求将其转换为适合于HBase存储的表并插入数据: 学生表(Student) 学号(S_No) 姓名(S_Name) 性别(S_Sex) 年龄(S_Age) 201 ...
随机推荐
- Jenkins拉取GitHub上代码
1.github 生成 Personal Access Token 2.github 设置 GitHub webhooks (具体需要持续集成的项目),新建或者设置现有项目的 webhooks 选项, ...
- [Oracle19C 数据库管理] 配置数据库审计
以下内容未经整理 占位 强制审计:无法关闭此审计,比如记录数据库的开启和关闭. 标准审计: 基于值得审计:创建触发器,基于值进行记录.Trigger占用资源多 细粒度审计:加一些where条件,针对触 ...
- gateway 网关接口防篡改验签
gateway 网关接口防篡改验签 背景:为了尽可能降低接口在传输过程中,被抓包然后篡改接口内的参数的可能,我们可以考虑对接口的所有入参做签名验证,后端在网关依照相同的算法生成签名做匹配,不能匹配的返 ...
- SAP 结构转JSON
*使用方式 jsonstr = zui2_json=>serialize( data = ls_in compress = abap_true pretty_name = zui2_json=& ...
- ES6新增运算符 ?? || &&
运算符(?? || &&) && 与运算符 &&左边表达式为真时执行右边表达式 let a = true let b = 0 a && ...
- Js实现监听input输入
实现原理: 默认input第一个带光标,第一个输完自动跳转到第一个输入框,以此类推, 当删除某一个输入框中的值重新输入,输入完后自动跳转到下一个 代码实现: <div class="c ...
- vue.js----之框架搭建(一)
首先你要有node,没有的去官网安装一下就好了 好了开始搭建骨架 第一步安装vue-cli npm install -g vue-cli 创建vue项目 语法:这里我选择使用webpack来创建 vu ...
- Spring core rce 0day(CVE-2022-22965)视频教程附工具
Spring 远程代码执行漏洞,先上图,视频晚点上传
- js本地时钟
js本地时钟,如上图所示,秒是跳动的 1 // 本地时钟 2 function clockon() { 3 var now = new Date(); 4 var year = now.getFull ...
- json字符串让里面的""和null不显示出来
工具类 ------------------------------------------------------------------------------------------------ ...