使用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. Feign客户端实现RPC 调用

    1,springcloud 中支持http调用的两种方式,RestTemplate,Feign客户端 2,Feign 客户端是一个声明式(注解方式)http 远程调用工具 3,实现方式如下: 第一步: ...

  2. ESPCMS-Seay自动加手工代码审计

    ESPcms代码审计 源码下载地址:http://yesky.91speed.org.cn/sw/180001_190000/rar/espcms_utf8_5.4.12.05.14.rar 1.自动 ...

  3. 树形dp技巧,多叉树转二叉树

    今天复习树形dp时发现一道比较古老的题,叫选课,是树形dp的一道基础题,也是多叉树转二叉树应用的模版题 多叉树转二叉树的应用非常广泛,因为如果一个节点的儿子太多,一个一个存下来不方便去查询,并且会增加 ...

  4. Day20-tomcat

    tomcat 一.Java及tomcat简介 二.安装JDK及tomcat 1.安装jdk 安装jdk很简单,首先下载网上的jdk安装包,我这边下载的是jdk-8u221-linux-x64.tar. ...

  5. Codeforces 631 (Div. 2) D. Dreamoon Likes Sequences 位运算^ 组合数 递推

    https://codeforces.com/contest/1330/problem/D 给出d,m, 找到一个a数组,满足以下要求: a数组的长度为n,n≥1; 1≤a1<a2<⋯&l ...

  6. 【故障公告】部署在 k8s 上的博客后台昨天与今天在访问高峰多次出现 502

    非常抱歉,从昨天上午开始,部署在 k8s 集群上的博客后台(基于 .NET Core 3.1 + Angular 8.2 实现)出现奇怪问题,一到访问高峰就多次出现 502 ,有时能自动恢复,有时需要 ...

  7. WDK驱动开发点滴

    老程序员做新方向,老树发新芽,作为菜鸟的我,写点心得,用以记录并与同行交流 1对一些概念的理解: KMDF与UMDF.两者的框架,及使用VS生成的初始代码基本相同,只有所包含的头文件不同,链接的系统库 ...

  8. C++中的map

    c++中的map类型变量不能为const类型 示例 struct INST{ string name; string type; string func; }; map<string, INST ...

  9. IP和端口查询

  10. php __DIR__ 解释下

    __DIR__, php5.3 才增加的这个魔术常量,表示当前文件所在的目录地址. php5.3之前用dirname(__FILE__);表示__DIR__; __FILE__这个表示当前文件的路径.