使用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操作的更多相关文章

  1. HDFS shell操作及HDFS Java API编程

    HDFS shell操作及HDFS Java API编程 1.熟悉Hadoop文件结构. 2.进行HDFS shell操作. 3.掌握通过Hadoop Java API对HDFS操作. 4.了解Had ...

  2. 利用SparkLauncher 类以JAVA API 编程的方式提交Spark job

    一.环境说明和使用软件的版本说明: hadoop-version:hadoop-2.9.0.tar.gz spark-version:spark-2.2.0-bin-hadoop2.7.tgz jav ...

  3. HBase环境搭建、shell操作及Java API编程

    一. 1.掌握Hbase在Hadoop集群体系结构中发挥的作用和使过程. 2.掌握安装和配置HBase基本方法. 3.掌握HBase shell的常用命令. 4.使用HBase shell命令进行表的 ...

  4. 9. 使用ZooKeeper Java API编程

    ZooKeeper是用Java开发的,3.4.6版本的Java API文档可以在http://zookeeper.apache.org/doc/r3.4.6/api/index.html上找到. Ti ...

  5. RabbitMQ的Java API编程

    1.创建Maven工程,pom.xml引入依赖: <dependency> <groupId>com.rabbitmq</groupId> <artifact ...

  6. MyBatis(七):mybatis Java API编程实现增、删、改、查的用法

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...

  7. MyBatis(六):Mybatis Java API编程实现一对多、一对一

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...

  8. java网络编程TCP传输—流操作—拿到源后的写入动作

    在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充···· 1.利用byte数组作为一个缓冲区进行读写 客户端上传 //获取socket ...

  9. 与HDFS交互- By java API编程

    环境(ubuntu下) jdk eclipse jar(很烦,整了很久才清楚) - 导包方法 查看:https://www.cnblogs.com/floakss/p/9739030.html ()” ...

随机推荐

  1. vscode vue 模版生成,vue 一键生成

    vscode vue 模版 继上篇文章(vue 格式化),顺便记录下 vue 模版生成.图片就不在贴了,如果有找不到 vscode 插件商店的可以访问上篇文章. 一.安装 VueHelper 在 vs ...

  2. JavaScript实现图结构

    JavaScript实现图结构 一.图论 1.1.图的简介 什么是图? 图结构是一种与树结构有些相似的数据结构: 图论是数学的一个分支,并且,在数学中,树是图的一种: 图论以图为研究对象,研究顶点和边 ...

  3. Python input和print函数

    一.input函数 可以看出,input()函数默认输入的是字符串类型,需要eval()函数将其进行转换. 区别直接赋值的情况,Python可以自动识别数据类型 二.print函数 1.直接输出 无论 ...

  4. Activiti网关--并行网关

    1.什么是并行网关 并行网关允许将流程分成多条分支,也可以把多条分支汇聚到一起,并行网关的功能是基于进 入和外出顺序流的: fork 分支: 并行后的所有外出顺序流,为每个顺序流都创建一个并发分支. ...

  5. C 电压

      时间限制 : 10000 MS   空间限制 : - KB  评测说明 : 1s,256m 问题描述 JOI社的某个实验室中有着复杂的电路.电路由n个节点和m根细长的电阻组成.节点被标号为1~N ...

  6. CPU、内存、硬盘、指令之间的关系

    我们都知道所有的程序最终都是一系列计算机能够识别的指令和数据,通过执行这些指令来控制整个计算机. 而CPU就是负责读取和解释执行这些指令的,CPU主要包括运算器.控制器和寄存器,控制器负责把指令.数据 ...

  7. thinkphp中array_diff运行无效 Invalid opcode 153/1/8

    经本人查证,发现是thinkPHP优化导致的与array_diff冲突.thinkPHP 报的错:Invalid opcode 153/1/8.有谁知道原理的,说说,让俺也明白.

  8. [ddt02篇]十年测试老鸟帮您解析:ddt结合txt,excel,csv,mysql实现自动化测试数据驱动

    一.前言: 阅读此文之前请先阅读: [ddt01篇]十年测试老鸟帮您解析:ddt数据驱动入门基础应用:https://www.cnblogs.com/csmashang/p/12679448.html ...

  9. Python设计模式(3)-工厂方法模式

    # coding=utf-8 #定义一个用于创建对象的接口,让子类决定实例化哪一个类 class DbManager: def __init__(self): pass def operate_db( ...

  10. CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架

    作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...