HBase连接数据库(集群)
一.使用java接口对hbase进行表的创建
1.引入需要的jar包
2.代码:
public static void main(String[] args) throws Exception {
//得到配置
Configuration conf= HBaseConfiguration.create();
//连接zookeeper,就可以对hbase进行操作
conf.set("hbase.zookeeper.quorum", "itcast04:2181,itcast05:2181,itcast06:2181");
//使用java接口创建表
HBaseAdmin admin=new HBaseAdmin(conf);
//指定表名
HTableDescriptor htd=new HTableDescriptor(TableName.valueOf("peoples"));
//添加列族(info,data)
HColumnDescriptor hcd_info=new HColumnDescriptor("info");
hcd_info.setMaxVersions(3);
HColumnDescriptor hcd_data=new HColumnDescriptor("data");
htd.addFamily(hcd_info);
htd.addFamily(hcd_data);
//创建表
admin.createTable(htd);
//关闭
admin.close();
}
二.使用java接口对hbase中的表进行crud操作
package cn.itcast.hbase; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.hadoop.conf.Configuration;
//import org.apache.hadoop.fs.shell.CopyCommands.Get;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hdfs.DFSClient.Conf;
import org.junit.Before;
import org.junit.Test; import org.apache.hadoop.hbase.util.Bytes; public class HBaseDemo { private Configuration conf=null; //在所有方法之间初始化
@Before
public void init(){
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "itcast04:2181,itcast05:2181,itcast06:2181");
} //-------------一次插入一条数据------------------
//插入数据
@Test
public void testPut() throws Exception{
//得到一个表对象
HTable table =new HTable(conf, "peoples");
//得到一个Put对象
//将字符串转换为字符数组
Put put=new Put(Bytes.toBytes("kr0001"));
put.add(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("zhangsanfeng"));
put.add(Bytes.toBytes("info"), Bytes.toBytes("age"), Bytes.toBytes("300"));
put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(3000));
//在表中放入put对象
table.put(put);
table.close();
} //插入100万条,速度会很快(服务器几秒,自己的电脑1分半)对比Oracle,mysql
//-------------一次插入海量数据------------------
@Test
public void testPutAll() throws IOException{ //HTablePool pool=new HTablePool(config,10);
HTable table =new HTable(conf, "peoples");
//得到list对象
List<Put> puts=new ArrayList<Put>(10000);
// //第一种方式
// //将put放入list中
// for(int i=1;i<=1000000;i++){
// Put put=new Put(Bytes.toBytes("kr"+i));
// put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(""+i));
// puts.add(put);
// }
// //在表中放入List
// table.put(puts);
// table.close(); //第二种方式
for(int i=1;i<=1000000;i++){
Put put=new Put(Bytes.toBytes("kr"+i));
put.add(Bytes.toBytes("info"), Bytes.toBytes("money"), Bytes.toBytes(""+i));
puts.add(put);
//每隔1w条放一次
if(i%10000==0){
table.put(puts);
puts=new ArrayList<Put>(10000);//相当于清空
}
}
table.put(puts);
table.close(); }
//--------查询一个(不到1s)-----------------
@Test
public void testGet() throws IOException{
HTable table =new HTable(conf, "peoples");
Get get =new Get(Bytes.toBytes("kr999999"));
//传get对象
//返回result对象
Result result=table.get(get);
String r=Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("money")));
System.out.println(r);
table.close();
} //--------查询多个-----------------
@Test
public void testScan() throws IOException{
HTable table =new HTable(conf, "peoples");
//创建scan对象(按照字典顺序排[))
Scan scan=new Scan(Bytes.toBytes("kr299990"), Bytes.toBytes("kr300000"));
//返回结果集
ResultScanner scanner=table.getScanner(scan);
for(Result result:scanner){
String r=Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("money")));
System.out.println(r);
}
table.close();
}
//--------更新(put将老版本覆盖,查询最新的)----------------- //--------删除成功--------------------
@Test
public void testDel() throws IOException{
HTable table =new HTable(conf, "peoples");
//创建delete对象
Delete delete = new Delete(Bytes.toBytes("kr999999"));
table.delete(delete);
table.close();
} //---------创建表---------------------------
public static void main(String[] args) throws Exception { //使用java接口创建表
HBaseAdmin admin=new HBaseAdmin(conf);
//指定表名
HTableDescriptor htd=new HTableDescriptor(TableName.valueOf("peoples"));
//添加列族(info,data)
HColumnDescriptor hcd_info=new HColumnDescriptor("info");
hcd_info.setMaxVersions(3);
HColumnDescriptor hcd_data=new HColumnDescriptor("data");
htd.addFamily(hcd_info);
htd.addFamily(hcd_data);
//创建表
admin.createTable(htd);
//关闭
admin.close();
} }
HBase连接数据库(集群)的更多相关文章
- [推荐]Hadoop+HBase+Zookeeper集群的配置
[推荐]Hadoop+HBase+Zookeeper集群的配置 Hadoop+HBase+Zookeeper集群的配置 http://wenku.baidu.com/view/991258e881c ...
- 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解
引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...
- Hbase的集群安装
hadoop集群的搭建 搭建真正的zookeeper集群 Hbase需要安装在成功部署的Hadoop平台,并且要求Hadoop已经正常启动. 同时,HBase需要集群部署,我们分别把HBase 部署到 ...
- HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)
原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...
- CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- HBase数据库集群配置
0,HBase简介 HBase是Apache Hadoop中的一个子项目,是一个HBase是一个开源的.分布式的.多版本的.面向列的.非关系(NoSQL)的.可伸缩性分布式数据存储模型,Hbase依托 ...
- [精华]Hadoop,HBase分布式集群和solr环境搭建
1. 机器准备(这里做測试用,目的准备5台CentOS的linux系统) 1.1 准备了2台机器,安装win7系统(64位) 两台windows物理主机: 192.168.131.44 adminis ...
- hbase分布式集群搭建
hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...
- Hadoop+Hbase分布式集群架构“完全篇”
本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...
- HBASE分布式集群搭建(ubuntu 16.04)
1.hbase是依赖Hadoop运行的,因此先确保自己已搭建好Hadoop集群环境 没安装的可以参考这里:https://www.cnblogs.com/chaofan-/p/9740408.html ...
随机推荐
- 微信小程序setData的使用,通过[...]进行动态key赋值
首先先介绍一下微信小程序Page.prototype.setData(Object data, Function callback)的讲解: setData函数用于将数据从逻辑层发送到视图层(异步), ...
- Q - Euclid in Manhattan(欧几里德距离==曼哈顿距离?)
Desciption Consider a set of n points in a 2-D plane with integer coordinates. There are various way ...
- 最新的 xp sp3序列号(绝对可通过正版验证)-xp序列号
windows xp激活方法一:使用windows xp激活码 以下xp系统激活码都是可用的 MRX3F-47B9T-2487J-KWKMF-RPWBY(工行版) 可用(强推此号) QC986-27D ...
- Java学习笔记-eclipse配置
一.配置Java环境变量 JAVA_HOME:D:\Program Files\Java\jdk1.7.0_76 CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HO ...
- What is JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON具有以下这些形式: 对象是一个无序的“‘名称/值’对” ...
- 树莓派安装CentOS
1.下载并安装,这里使用的是 centos系统地址:http://mirror.centos.org/altarch/7/isos/armhfp/ 下载CentOS-Userland-7-armv7h ...
- 使用CocoaPods,文档中出现引用头文件找不到的问题。
现在很多人都会使用CocoaPods来管理自己使用的第三方开源代码,这两天我的工程中碰到了这样一个问题,当我使用CocoaPods来进行三方源码的引入,但是在实际的工程当中引入出现了这样一个问题,就是 ...
- bzoj3940 censoring 题解(AC自动机)
题目描述 Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so they h ...
- QuickClip—界面原型设计
1.需不需要设置用户登录/注册页? QuickClip没有提供该项功能.因为本产品为单纯的移动端视频编辑软件,是一个工具类软件.而且移动端软件本就追求的是方便快捷.简单易用,本产品不需要标识使用者的身 ...
- The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk1.8.0_60\bin;C:\Windows\Sun\Jav
启动项目自动结束,查看日志发现 [ost-startStop-1] o.a.catalina.core.AprLifecycleListener : The APR based Apache To ...