使用java操作hbase(单节点)
1.在运行java代码之前,一定要先启动Hbase,很重要!!
cd /home/cx/itcast/hbase-1.2.6/bin
./start-hbase.sh
2.新建一个java项目,导入相关的jar包,放在lib目录下,并右键build path将它们添加到referenced libraries
3.在项目下新建conf文件夹,将Hbase的配置文件hbase-site.xml复制到该目录,然后选择项目属性,在Libraies->add class
folder,将conf目录选上。(这一步代替了集群情况下,java连接zookeeper的操作)
hbase-site.xml配置如下:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/cx/myhbase1/</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/bigfish/myhbase1/zookeeper</value>
</property>
</configuration>
4.java代码如下:
package com.cx; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.apache.hadoop.conf.Configuration;
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.*;
import org.apache.hadoop.hbase.util.Bytes; public class Hbase1 {
static private Configuration conf=HBaseConfiguration.create();;
//------------------创建表操作 -------------------------------------
public static void createTable(String tableName,String[] cfs) throws Exception {
HBaseAdmin admin=new HBaseAdmin(conf);
if(admin.tableExists(tableName)) {
System.out.println("表已经存在");
}else {
//指定表名
HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(tableName));
//添加列族
for(int i=0;i<cfs.length;i++) {
htd.addFamily(new HColumnDescriptor(cfs[i]));
}
//创建表
admin.createTable(htd);
System.out.println("表创建成功!");
}
admin.close();
}
//----------------------一次插入一条数据----------------------------------
public static void put
(String tableName,String row,String columnFamily,String column,String data) throws Exception{
//得到一个表对象
HTable table =new HTable(conf, tableName);
//得到一个Put对象
//将字符串转换为字符数组
Put put=new Put(Bytes.toBytes(row));
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(data));
//在表中放入put对象
table.put(put);
System.out.println("插入数据成功!");
table.close();
}
// //----------------------一次插入海量数据(1oow)--------------------------
// public static void putAll(String tableName) throws Exception{
// HTable table =new HTable(conf, tableName);
// //得到list对象//得到list对象
//
// List<Put> puts=new ArrayList<Put>(10000);
// for(int i=1;i<=1000000;i++) {
// Put put =new Put(Bytes.toBytes("rk"+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();
// }
//------------------查询一个---------------------------
public static void get(String tableName,String row) throws IOException{
HTable table =new HTable(conf, tableName);
Get get =new Get(Bytes.toBytes(row));
//传get对象
//返回result对象
Result result=table.get(get);
String r=Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
System.out.println("get="+r);
table.close();
}
//---------------------查询多个-------------------------------
public static void scan(String tablename) throws Exception{
HTable table = new HTable(conf, tablename);
Scan scan = new Scan();
ResultScanner rs = table.getScanner(scan);
for(Result result:rs){
String r=Bytes.toString(result.getValue(Bytes.toBytes("info"),Bytes.toBytes("name")));
System.out.println("Scan:"+r);
}
table.close();
}
//----------------------更新(put将老版本覆盖,查询最新的)----------------- //-------------------------删除--------------------------------------
public static void del(String tableName) throws IOException{
HTable table =new HTable(conf, tableName);
//创建delete对象
Delete delete = new Delete(Bytes.toBytes("rk0003"));
table.delete(delete);
System.out.println("删除成功!");
table.close();
} public static void main(String args[]) throws Exception
{ String tableName="people";
String columnFamilys[]={"info","data"};
Hbase1.createTable(tableName, columnFamilys);
Hbase1.put(tableName,"rk0001" , "info", "name", "cx");
Hbase1.put(tableName,"rk0002" , "info", "name", "zhangsan");
Hbase1.put(tableName,"rk0001" , "info", "age", "20");
Hbase1.put(tableName,"rk0001" , "info", "sex", "male");
Hbase1.put(tableName,"rk0001" , "info", "height", "1.75");
Hbase1.put(tableName,"rk0002" , "info", "age", "22");
Hbase1.put(tableName,"rk0001" , "data", "sal", "10000");
Hbase1.put(tableName,"rk0003" , "info", "age", "25");
// Hbase1.putAll(tableName);
Hbase1.get(tableName,"rk0001");
Hbase1.scan(tableName);
Hbase1.del(tableName);
} }
5.运行无错误

6.在命令行中查询表是否建立成功

使用java操作hbase(单节点)的更多相关文章
- Java 操作 HBase 教程
Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Java操作hbase总结
用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...
- java操作Hbase实例
所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.u ...
- 错误: 找不到或无法加载主类 java操作hbase出错
用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...
- HBase单节点的安装与配置
HBase的安装配置1.下载:http://mirror.bit.edu.cn/apache/hbase/stable/ hbase-1.2.6-bin是直接编译好的,直接安装. hbase- ...
- Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试
本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明: Redis 未做任何优化, 单节点 (服务器上, 内存64G) ...
- HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html
HBase提示已创建表,但是list查询时,却显示表不存在. https://blog.csdn.net/liu16659/article/details/80216085 下载网址 http://a ...
- 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...
随机推荐
- webapp填坑记录
网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...
- 士兵杀敌 三 --- O( 1 ) 的时间复杂度 .
一看就是 十分简单的 题 , 然后上去开始无脑程序 超时~~~ 感觉时间复杂度 , 已经很低了 , 但是并没有什么卵用 . #include<stdio.h> #in ...
- 51nod1344 走格子
1344 走格子 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格 ...
- VS2013使用单元测试
一.开发环境 开发工具:VS2013 二.开发流程 1.添加一个控制台项目UnitDemo namespace UnitDemo { public class Program { static voi ...
- 1102 A-B数对
题目描述 出题是一件痛苦的事情! 题目看多了也有审美疲劳,于是我舍弃了大家所熟悉的A+B Problem,改用A-B了哈哈! 好吧,题目是这样的:给出一串数以及一个数字C,要求计算出所有A-B=C的数 ...
- postgreSQL在Centos6下编译安装
1.准备安装源 下载地址:https://www.postgresql.org/ftp/source/ 下载并解压. 2.软件编译安装 配置.检查安装环境 ./configure --prefix=/ ...
- Mysql5.7多源复制,过滤复制一段时间后增加复制一个库的实现方法
多源复制如果是整个实例级别的复制,那不存在下面描述的情况. 如果是对其中一个或多个主实例都是过滤复制,并且运行一段时间后,想在这个源上再增加一个库怎么实现? 主1:192.168.1.10 330 ...
- Android Studio 入门 Hello World
Android Studio 入门 Hello World Gavin要加油 1.5k 6月22日 发布 推荐 1 推荐 收藏 17 收藏,2.1k 浏览 引言 前两天开始学习android开发,本来 ...
- JAVA 学习笔记 - 基础语法 2
---恢复内容开始--- 1.数组的申明和应用 数据类型 数组名称[] = null; //在堆栈中申明变量名称 数组名称 = new 数据类型[10]; // ...
- HDU_3732_(多重背包)
Ahui Writes Word Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...