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 ...
随机推荐
- 基于Hexo且在GitHub上搭建博客
title: 基于Hexo且在GitHub上搭建博客 Welcome to Fofade's Blog! 搭建初衷 大大小小,大学两年,玩了很多,也学了很多. 回首望之,曾经不知道的,现在是知道了,但 ...
- EditText(3)输入时自动完成功能
在android输入自动完成功能由EditText的子类 AutoCompleteTextView 实现.如下: 1,在xml中使用 <AutoCompleteTextView android: ...
- 专题九:实现类似QQ的即时通信程序
引言: 前面专题中介绍了UDP.TCP和P2P编程,并且通过一些小的示例来让大家更好的理解它们的工作原理以及怎样.Net类库去实现它们的.为了让大家更好的理解我们平常中常见的软件QQ的工作原理,所以在 ...
- 6.12---bug
- acm练习-day1
描述现在,有一行括号序列,请你检查这行括号是否配对.输入第一行输入一个数N(0<N<=100),表示有N组测试数据.后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于1 ...
- 【转载】testlink 1.8.5 安装错误的解决方法
TestLink所需环境为PHP+MYSQL (支持MS SQL等),系统推荐使用PHP5.2,安装成功以后,如果运行时出错,主要两种错: [1].HP Warning: strtotime(): I ...
- navicat创建存储过程报错
搞了半天这个恶心的报错,最后发现竟然是存储过程的一个varchar类型的参数没给长度,如varchar(64)长度必须指定不然就会报错: mark一记
- js正则表达式限制文本框只能输入数字,小数点,英文字母
1.文本框只能输入数字代码(小数点也不能输入)<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafter ...
- vue基础---表单输入绑定
[一]基础用法 用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取正确的方 ...
- 用sed写配置IP脚本参数
#!/bin/bash#配置ip地址参数脚本NET=/etc/sysconfig/network-scripts/ifcfg-ens33if grep -E "BOOTPROTO=dhcp& ...