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 ...
随机推荐
- CVE-2020-2551
前言 2020年1月15日,Oracle发布了一系列的安全补丁,其中Oracle WebLogic Server产品有高危漏洞,漏洞编号CVE-2020-2551,CVSS评分9.8分,漏洞利用难度低 ...
- Kato's inequality and subharmonic function
If $\Delta u=0$ in $\Omega\subset\mathbb{R}^n (n\geq2)$, then for $p>\frac{n-2}{n-1}$, $|Du|^p$ ...
- docker 部署的mariadb数据库备份还原方案
docker部署下的mariadb数据库备份还原方案 背景:在使用docker部署的mariadb时,我们会将容器内的数据卷挂载到宿主机上,做简单的备份,容器在正常运行和停止的情况下,能快速创建mar ...
- Ubuntu网络重置
Ubuntu网络重置 >重置网络 sudo service network-manager stop sudo rm /var/lib/NetworkManager/NetworkManager ...
- logrotate配置记录
对于一些比较频繁又没有太大意义的log,可以设定出更严格的切割策略 see https://blog.csdn.net/liuxiao723846/article/details/100120058 ...
- django项目中使用swagger来实现接口文档自动生成
一.Swagger 一般我们在对接前后端的时候,都需要提供相应的接口文档.对于后端来说,编写接口文档即费时费力,还会经常因为没有及时更新,导致前端对接时出现实际接口与文档不一致.而且手写接口文档还容易 ...
- AIIE21th003: 2021年第二届国际工业工程和人工智能大会(IEAI 2021)
会议亮点: 1.IEAI2021由ACM新加坡分会赞助举办,它是MSIE 2021的分会. 2.被接收的文章会被发表在ACM国际论文集上,并被EI Compendex, Scopus, Thomson ...
- PLM数据库脚本升级命令
登录mysql:mysql -uroot -S /mysqlrun/plmtestmysql/run/plmtestmysql.sock --port=10050 -p 导出数据库脚本:mysql ...
- LaTex【七】latex换行顶格、不缩进
LaTex换行会默认缩进,如果想不缩进只需要在不需要缩进的内容前面加上 \noindent 命令 ababababababababababab \noindent 不缩进不缩进
- 手写reduce()
function reduce(arr, callBack ,initVal){ if(!Array.isArray(arr) || !arr.length || typeof callBack != ...