最近学习了下HBase,面向列的数据库,属于NoSql范畴。通过编写Java代码来连接HBase数据库。

一、前提

Hadoop+HBase环境已经装好,然后利用Java HBase API操作HBase的话,最好将虚拟机中的HBase版本对应起来,我们从虚拟机中把HBase文件下载下来,利用Xftp软件。

二、编写代码

将下载下来的HBase文件夹的 lib包下的所有jar包丢进项目 Library 中然后编写代码。

public class HBaseDBCon {public static Configuration configuration;public static Connection connection;public static Admin admin;//初始化连接static{configuration  = HBaseConfiguration.create();try{connection = ConnectionFactory.createConnection(configuration);admin = connection.getAdmin();}catch (IOException e){e.printStackTrace();}}public static void main(String[] args) throws Exception{//创建命名空间createNameSpace("dp");//创建表createTable("dp:dept","info","subdept");//批量添加数据mulPut("dp:dept");close();}/*** 创建命名空间* @param ns 命名空间名字* @throws Exception*/public static void createNameSpace(String ns) throws Exception {admin.createNamespace(NamespaceDescriptor.create(ns).build());}//批量添加数据public static void mulPut(String tableName) throws IOException {Table table = connection.getTable(TableName.valueOf(tableName));// 创建一个列表用于存放Put实例List<Put> puts = new ArrayList<Put>();Put put1 = new Put(Bytes.toBytes("0_001"));put1.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("internet"));put1.add(Bytes.toBytes("subdept"), Bytes.toBytes("1_001"), Bytes.toBytes("develop"));put1.add(Bytes.toBytes("subdept"), Bytes.toBytes("1_002"), Bytes.toBytes("test"));puts.add(put1);   Put put2 = new Put(Bytes.toBytes("1_001"));put2.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("develop"));put2.add(Bytes.toBytes("info"), Bytes.toBytes("f_pid"), Bytes.toBytes("0_001"));put2.add(Bytes.toBytes("subdept"), Bytes.toBytes("2_001"), Bytes.toBytes("develop1"));put2.add(Bytes.toBytes("subdept"), Bytes.toBytes("2_002"), Bytes.toBytes("develop2"));put2.add(Bytes.toBytes("subdept"), Bytes.toBytes("2_003"), Bytes.toBytes("develop3"));puts.add(put2);table.put(puts);table.close();}/*** 创建表* @param myTableName  表名* @param colFamily  列簇* @throws IOException*/public static void createTable(String myTableName,String[] colFamily) throws IOException {TableName tableName = TableName.valueOf(myTableName);//判断是否存在该表if(admin.tableExists(tableName)){System.out.println("talbe is exists!");}else {HTableDescriptor hTableDescriptor = new HTableDescriptor(tableName);for(String str:colFamily){HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(str);hTableDescriptor.addFamily(hColumnDescriptor);}admin.createTable(hTableDescriptor);}//close();}/*** 删除表* @param tableName 表名* @throws IOException*/public static void deleteTable(String tableName) throws IOException {TableName tb_name = TableName.valueOf(tableName);if (admin.tableExists(tb_name)) {admin.disableTable(tb_name);admin.deleteTable(tb_name);}//close();}/*** 查看所有表* @throws IOException*/public static void listTables() throws IOException {//HTableDescriptor hTableDescriptors[] = admin.listTables();for(HTableDescriptor hTableDescriptor :hTableDescriptors){System.out.println(hTableDescriptor.getNameAsString());}//close();}/*** 向表中插入数据* @param tableName 表名* @param rowKey 行键* @param colFamily 列簇* @param col 指定插入的列名* @param val 指定插入列名的值* @throws IOException*/public static void insertRow(String tableName,String rowKey,String colFamily,String col,String val) throws IOException {Table table = connection.getTable(TableName.valueOf(tableName));//利用Put插入数据Put put = new Put(rowKey.getBytes());//获取列簇并添加值put.addColumn(colFamily.getBytes(), col.getBytes(), val.getBytes());table.put(put);table.close();//close();}/*** 删除一行数据* @param tableName* @param rowKey* @param colFamily* @param col* @throws IOException*/public static void deleteRow(String tableName,String rowKey,String colFamily,String col) throws IOException {Table table = connection.getTable(TableName.valueOf(tableName));Delete delete = new Delete(rowKey.getBytes());//删除指定列族//delete.addFamily(Bytes.toBytes(colFamily));//删除指定列//delete.addColumn(Bytes.toBytes(colFamily),Bytes.toBytes(col));table.delete(delete);table.close();//close();}/*** 根据rowkey查找数据* @param tableName 指定表名* @param rowKey 行键* @param colFamily 列簇* @param col 列名* @throws IOException*/public static void getData(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();//close();}/*** 输出* @param result 结果集*/public 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("Timetamp:"+cell.getTimestamp());System.out.println("column Family:"+new String(CellUtil.cloneFamily(cell))+" ");System.out.println("row Name:"+new String(CellUtil.cloneQualifier(cell))+" ");System.out.println("value:"+new String(CellUtil.cloneValue(cell))+" ");}}/*** 关闭连接*/public static void close(){try{if(admin != null){admin.close();}if(null != connection){connection.close();}}catch (IOException e){e.printStackTrace();}}
}

然后将下载下来的HBase文件夹中的hbase-site.xml文件放在src目录下,然后设置一系列参数配置

<configuration><property><name>hbase.rootdir</name><value>hdfs://master:9000/hbase</value></property><property><name>hbase.zookeeper.quorum</name><value>master</value></property><property><name>hbase.zookeeper.property.dataDir</name><value>/home/hbase-1.2.6/data/zookeeper</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property>
</configuration>

直接运行就可以了。

Java连接HBase数据库,操作HBase数据库相关推荐

  1. Java连接MySQL8.0以上版本数据库方式

    Java连接MySQL8.0以上版本数据库方式 MySQL 8.0 开始数据库相比常用的 5.X 版本发生了比较大的变化,我们在连接数据库的过程中许多地方也要发生一些变化. 总结一下,想要利用 mys ...

  2. python连接并简单操作SQLserver数据库

    python连接并简单操作SQLserver数据库 实验环境: python版本3.9 Python 3.9.7 (tags/v3.9.7:1016ef3, Aug 30 2021, 20:19:38 ...

  3. 命令行hbase shell操作hbase

    命令行hbase shell操作hbase 如果想查看所有关于hbase shell的命令在命令行工具中输入help 如果想查看某个命令的话输入help "命令名称" 我们就查看一 ...

  4. Java中通过JDBC操作MySQL数据库

    JDBC相关的操作  0.JDBC常用类和接口介绍  DriverManager类  DriverManager类用来管理数据库中的所有驱动程序:是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用 ...

  5. java mysql nclob_java语言操作Oracle数据库中的CLOB数据类型 (转)

    java语言操作Oracle数据库中的CLOB数据类型 (转)[@more@] 有关字段类型的相关信息可以查阅oracle技术网.下面摘抄一些有关blob.clob等类型的说明.又便于大家的了解. 字 ...

  6. 连接Linux服务器操作Oracle数据库

    1.连接到Linux服务器(输入服务器的ip地址) ssh 10.199.94.227 连接成功后会提示输入密码,输入成功会提示. 2.切换到操作Oracle数据库 su - oracle 切换成功会 ...

  7. jfinal连接oracle_JFinal框架操作oracle数据库

    JFinal框架操作oracle数据库,需要在configPlugin()方法中配置链接oracle数据库的相关配置 配置JFinal数据库操作插件,configPlugin方法 这里我加载jdbc. ...

  8. Java连接Redis及操作(一)

    Redis简介 Redis是一个开源的使用ANSI c语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它是一种非关系性的数据库.它是以key-val ...

  9. python如何查询数据库_Python数据库操作手册-数据库专栏,SQL Server

    数据库的操作在现在的python里面已经变得十分的好用,有了一套api标准.下面的就是讲讲如何的去使用这套框架定义.此框架包含以下部分模块接口 连接对象 游标对象 dbi辅助对象 数据类型与定义 如何 ...

  10. mysql多数据源切换_CI 多数据库操作 切换数据库

    CI 切换数据库是很方便的,如: 连接多数据库 如果你需要同时连接多于一个的数据库,你可以用以下方式来实现:$DB1 = $this->load->database('group_one' ...

最新文章

  1. Redis客户端JetCache的单机版和集群版的配置
  2. mysql之字符编码问题
  3. laravel实现数据分页
  4. 计算机c盘知识,为什么电脑系统盘叫C盘而不是A或B盘?
  5. Mac OSX中memcached安装测试
  6. .NET Core 3.0中的数据库驱动框架System.Data
  7. 学习笔记(18):Python网络编程并发编程-守护进程
  8. 如何做电脑桌面应用_CAD批量转PDF?一分钟教会你CAD如何转PDF,两种方法任你选择!...
  9. 小优优(u盘歌曲顺序调整)_电脑从U盘启动,这三种方式你知道吗?
  10. or函数 java_Java OptionalInt orElseGet()用法及代码示例
  11. [转]快速矩阵快速幂
  12. Java隔离容器之sofa-ark使用说明及源码解析
  13. SQL Server 2000 Service Pack 4 升级指南
  14. 人体姿态识别 tensorflow版本
  15. TCP通信调试助手===wireshark使用
  16. 几张思维导图告诉你搜索引擎优化(SEO)核心点
  17. 账号密码管理系统html,管理员密码一般是啥
  18. python 读excel字符型 数值_浅谈python 读excel数值为浮点型的问题
  19. VUE2.0全局方法注册
  20. 末日孤舰第三季/全集The Last Ship 迅雷下载

热门文章

  1. Protobuf使用手册--中文版
  2. 3.11 同时创建多个工作表的表头 [原创Excel教程]
  3. ITIL学习笔记——ITIL入门小知识
  4. 计算机上word如何批量打印,word批量调页面设置 关于Word如何批量打印
  5. python梦幻西游辅助_GitHub - woshiliushan/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
  6. 爬虫抓取新浪微博数据
  7. 采集摄像头RGB565数据并转为bmp图像
  8. 应用系统设计:在线教育平台,B2C平台设计
  9. 怎么用wps抽签_怎么制作抽签,WPS表格怎么制作抽签程序表格
  10. MMORPG开发之七日创世说(二)