使用JAVA API编程实现简易Habse操作
使用JAVA API编程实现下面内容:
1.创建《王者荣耀》游戏玩家信息表gamer,包含列族personalInfo(个人信息)、recordInfo(战绩信息)、assetsInfo(资产信息)。
2.向gamer表添加数据
personalInfo |
recordInfo |
assetInfo |
||
nickname |
gameID |
ranking |
integral |
|
row-001 |
QGhappy.Snow |
000000 |
One |
10000 |
row-002 |
XQMaster |
111111 |
Two |
20000 |
3.查询gamer表中所有数据
4.查找gamer表中行键为row-001,列键为personalInfo:nickname的内容
5.删除gamer表中行键为row-001,列键为personalInfo:nickname的内容
6.删除gamer表中行键为row-001的一行数据
7.删除gamer表。
1.启动Hadoop、Hbase
2.新建JAVA工程
3.导入habse/lib下的所有jarbao
4.新建HBaseEXample.class
import java.io.IOException;
import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*; public class HBaseExample { /**
* @param args
*/ public static Configuration configuration;
public static Connection connection;
public static Admin admin; public static void main(String[] args) throws IOException {
init();
createTable("gamer",new String[] {"personalInfo","recordInfo","assetsInfo"}); insertData("gamer","row-001","personalInfo","nickname","QGhappy.Snow");
insertData("gamer","row-001","personalInfo","gameID","000000");
insertData("gamer","row-001","recordInfo","ranking","One");
insertData("gamer","row-001","recordInfo","intergral","10000");
insertData("gamer","row-002","personalInfo","nickname","XQMaster");
insertData("gamer","row-002","personalInfo","gameID","111111");
insertData("gamer","row-002","recordInfo","ranking","Two");
insertData("gamer","row-002","assetsInfo","intergral","20000"); //queryAll("gamer"); //query("gamer","row-001","personalInfo","nickname"); //deleteDate("gamer","row-001","personalInfo","nickname"); //delete("gamer");
close(); } //删除数据
private static void deleteDate(String tableName,String rowKey,String colFamily,String col) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Delete delete = new Delete(rowKey.getBytes());
if(colFamily!=null){
delete.addFamily(colFamily.getBytes());
}
if(col!=null){
delete.addColumn(colFamily.getBytes(), col.getBytes());
}
table.delete(delete);
close();
System.out.println("数据成功删除!!!");
} //删除表
private static void delete(String tableName) throws IOException { TableName tableName2=TableName.valueOf(tableName);
if(admin.tableExists(tableName2)){
admin.disableTable(tableName2);
admin.deleteTable(tableName2);
}
System.out.println("table已删除!!!");
close();
} //查询
private static void query(String tableName,String rowKey,String colFamily,String col) throws IOException {
Table table =connection.getTable(TableName.valueOf(tableName));
Get get = new Get(rowKey.getBytes());
get.addColumn(colFamily.getBytes(), col.getBytes());
Result result =table.get(get);
showCell(result);
table.close();
} //查询整个表
private static void queryAll(String tableName) throws IllegalArgumentException, IOException {
Table table = connection.getTable(TableName.valueOf(tableName.getBytes()));
ResultScanner resultScanner = table.getScanner(new Scan());
if(resultScanner!=null){
for(Result r:resultScanner){
showCell(r);
}
}else {
System.out.println("表中无数据!!!!");
}
resultScanner.close();
} //打印到控制台的格式
private static void showCell(Result result) {
Cell[] cells= result.rawCells();
for(Cell cell:cells){
System.out.println("RowName:"+new String(CellUtil.cloneRow(cell)+""));
System.out.println("Family:"+new String(CellUtil.cloneFamily(cell)+""));
System.out.println("Qualifier:"+new String(CellUtil.cloneQualifier(cell)+""));
System.out.println("Value:"+new String(CellUtil.cloneValue(cell)+""));
}
} //插入
private static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Put put = new Put(rowKey.getBytes());
put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());
table.put(put);
table.close();
System.out.println("数据成功导入!!!");
} //创建表
private static void createTable(String myTableName,String[] colFamily) throws IOException {
TableName tableName = TableName.valueOf(myTableName);
if(admin.tableExists(tableName)){
System.out.println(tableName+"table exists!");
}else{
HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);
for(String str:colFamily){
HColumnDescriptor hColumnDescriptor= new HColumnDescriptor(str);
hTableDescriptor.addFamily(hColumnDescriptor);
}
admin.createTable(hTableDescriptor);
}
System.out.println(tableName+"成功创建!!!!"); }
//初始化
public static void init(){
configuration =HBaseConfiguration.create();
configuration.set("hbase.rootfir", "hdfs://localhost:9000/hbase");
try {
connection = ConnectionFactory.createConnection(configuration);
admin = connection.getAdmin();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //关闭
private static void close() {
try {
if(admin!=null){
admin.close();
}
if(null!=connection){
connection.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
使用JAVA API编程实现简易Habse操作的更多相关文章
- HDFS shell操作及HDFS Java API编程
HDFS shell操作及HDFS Java API编程 1.熟悉Hadoop文件结构. 2.进行HDFS shell操作. 3.掌握通过Hadoop Java API对HDFS操作. 4.了解Had ...
- 利用SparkLauncher 类以JAVA API 编程的方式提交Spark job
一.环境说明和使用软件的版本说明: hadoop-version:hadoop-2.9.0.tar.gz spark-version:spark-2.2.0-bin-hadoop2.7.tgz jav ...
- HBase环境搭建、shell操作及Java API编程
一. 1.掌握Hbase在Hadoop集群体系结构中发挥的作用和使过程. 2.掌握安装和配置HBase基本方法. 3.掌握HBase shell的常用命令. 4.使用HBase shell命令进行表的 ...
- 9. 使用ZooKeeper Java API编程
ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...
- RabbitMQ的Java API编程
1.创建Maven工程,pom.xml引入依赖: <dependency> <groupId>com.rabbitmq</groupId> <artifact ...
- MyBatis(七):mybatis Java API编程实现增、删、改、查的用法
最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...
- MyBatis(六):Mybatis Java API编程实现一对多、一对一
最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...
- java网络编程TCP传输—流操作—拿到源后的写入动作
在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充···· 1.利用byte数组作为一个缓冲区进行读写 客户端上传 //获取socket ...
- 与HDFS交互- By java API编程
环境(ubuntu下) jdk eclipse jar(很烦,整了很久才清楚) - 导包方法 查看:https://www.cnblogs.com/floakss/p/9739030.html ()” ...
随机推荐
- coding++ :JS-判断当前是否是IE浏览器,并返回时IE几?
IEVersion(); function IEVersion() { var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var is ...
- 数塔(杭电oj2084)
Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大 ...
- WiX 自定义
WiX 允许用户做一些自定义操作 用户界面向导 对于安装界面,用户可以用自己的位图.图标和许可证文本替换默认的.它们的路径存储在变量中,您可以在命令行或直接在源代码中指定这些变量: <WixVa ...
- 实现ls
一.任务详情 参考伪代码实现ls的功能,提交代码的编译,运行结果截图,码云代码链接 打开目录文件 针对目录文件 读取目录条目 显示文件名 关闭文件目录文件 二.伪代码 opendir while(re ...
- Python第三方包之pretty-errors
Python第三方包之pretty-errors 发现了一个第三方好用的python包,这个包可以让我们在面对冗长的错误时候能够一眼看到重点 安装方式 pip install pretty-error ...
- C 送外卖
时间限制 : - MS 空间限制 : 365536 KB 评测说明 : 时限1000ms 问题描述 暑期期间,何老板闲来无事,于是买了辆摩托车,签约某团外卖,跑起来送外卖的业务. 何老板负责的 ...
- Unity 游戏框架搭建 2019 (二十三) 备份与版本号&危险的操作
先列出上一篇的总结: 要做的事情: 备份:导出文件,并取一个合理的名字. 遗留问题: 第八个示例与之前的示例代码重复,功能重复. 约定和规则: 每个示例在 QFramework 目录下创建一个文件夹, ...
- JS必看面试题
https://www.jianshu.com/p/f1f39d5b2a2e 1. javascript的typeof返回哪些数据类型. 答案:string,boolean,number,undefi ...
- SSM 三大框架系列:Spring 5 + Spring MVC 5 + MyBatis 3.5 整合(附源码)
之前整理了一下新版本的 SSM 三大框架,这篇文章是关于它的整合过程和项目源码,版本号分别为:Spring 5.2.2.RELEASE.SpringMVC 5.2.2.RELEASE.MyBatis ...
- vector数组的相关知识
Vector 类实现了一个动态数组.和 ArrayList 很相似,但是两者是不同的: Vector 是同步访问的. Vector 包含了许多传统的方法,这些方法不属于集合框架. Vector 主要用 ...