使用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. Prism 源码解读5-数据绑定和命令

    介绍 WPF本身就支持通知.绑定和命令,实现ViewModel和VIew之间的通讯,但相对来说功能比较少,Prism扩充了这些功能并提供更加强有力,简洁的数据绑定和命令. 0 绑定通知 WPF的绑定通 ...

  2. 使用tensorflow实现cnn进行mnist识别

    第一个CNN代码,暂时对于CNN的BP还不熟悉.但是通过这个代码对于tensorflow的运行机制有了初步的理解 ''' softmax classifier for mnist created on ...

  3. flask中filter和filter_by的区别

    filter_by表内部精确查询 User.query.filter_by(id=4).first() filter 全局查询 id必须指明来源于那张表User,而且需要用等号,而不是赋值 User. ...

  4. Ubuntu下已安装Anaconda但出现conda: command not found错误解决办法

    原因:环境未配置 执行[vim ~/.bashrc]命令,进入配置文件,在最后一行按'o'插入一行,并添加语句: export PATH=/home/duanyongchun/anaconda3/bi ...

  5. 一篇漫画故事带你理解透HTTPS(上)

    2020年蝙蝠纪元,二毛一如往常的呆在家中,不敢外出去浪. 为排解心中之闷,二毛抽了一口老烟,熟练的打开了全球最大的同性交友网站,准备假装了解下最近流行的项目... 只听啪的一声回车键,哪知浏览器蹦出 ...

  6. 金三银四科学找工作,用python大数据分析一线城市1000多份岗位招聘需求

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 每年的三四月份是招聘高峰,也常被大家称为金三银四黄金招聘期,这时候上一 ...

  7. Prism+MaterialDesign+EntityFramework Core+Postgresql WPF开发总结 之 中级篇

    本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结. 总共分三个部分: 基础篇主要争对C#初学者,巩固C#常用知识点: 中级篇主要争对WPF布局与Mat ...

  8. Redis 笔记(一)——数据类型简介

    Redis 是一个 key-value 存储系统,但是它的 value 值不仅仅可以存储字符串,value 共有 五种 数据结构类型,具体如下: 数据结构类型 结构类型 结构存储的值 结构的读写能力 ...

  9. Windows命令help的基本使用

  10. layui经典模块化前端UI框架初识

    layui产生背景 layui相对于vue来说确实稍有逊色,但是官网提供的入门文档以及完善的框架结构,使的很多人开始用layui来开发前端页面,那么什么人会去使用layui呢? 针对后端开发人员,在对 ...