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 ...
随机推荐
- 如何保证access_token长期有效--微信公众平台开发
http://blog.csdn.net/qq_33556185/article/details/52758781 import javax.servlet.ServletContext; impor ...
- ACM博弈论总结
一.Bash博弈 1.问题模型:只有一堆n个物品,两人轮流从这堆物品中取物,最多取m个,最后取光者胜. 2.解决思路:当n=m+1时,由于一次最多取m个,无论先取者拿走多少个,后取者都能一次拿走剩余的 ...
- C#基础 进制转换6/17
二进制→十进制: 计算公式:a*20+b*21+c*22+…+m*2(n-1) 公式中a为二进制数右边第一位数,b为第二位数,以此类推 例:二进制1011010转换为十进制数为 0*20+1*21+0 ...
- php函数的定义和声明
1.函数的定义 函数是一个被命名的独立的代码段,它执行特定任务,并可以给调用它的程序返回值. 2.函数的优点 提高程序的重用性 提高程序的可维护性 可以提高软件的开发效率 提高软件的可靠性 控制程序的 ...
- android视频播放器系列(二)——VideoView
最近在学习视频相关的知识,现在也是在按部就班的一步步的来,如果有同样需求的同学可以跟着大家一起促进学习. 上一节说到了可以使用系统播放器以及浏览器播放本地以及网络视频,但是这在很大程度上并不能满足我们 ...
- springboot运行模式
1.springboot项目常见的运行方式: 2.说明: idea:在开发环境中跑项目,也就是我们在编码过程中的用的做多的方式 jar.war:线上.服务器上执行jar.war包的方式 maven插 ...
- JPEG图像压缩出现资源不足问题的解决
1,问题的提出 公司开发了一个图像压缩上传程序.采用Delphi语言实现.大致步骤如下: 1,上传前将文件打开装载到TJpegImage, 2,创建一个TBitmap组件,设置其大小,采用Stretc ...
- Fiddler 修改响应内容
1. 导入 FiddlerCore.dll 第三方库. 2. 开启侦听端口,FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Defau ...
- iOS布局分类
1.线性布局: 2.集合布局: 3.单元布局: 需要考虑因素: 空间充足.空间不足时内容.尺寸的取舍.
- nodejs连接数据库
var express = require("express");var query = require("querystring");var mysql = ...