使用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 ...
随机推荐
- robotframework - User key 操作
一.用户关键字操作思路 a.创建model1资源 b.在model下创建用户关键字 - 循环 c.测试套件下创建test_case/case2 & 用户关键字 d.测试套件中导入Resourc ...
- EditText(7)EditText输入事件监听
EditText.addTextChangedListener(TextWatcher watcher); void initSearch(){ search = (EditText) findVie ...
- document.write()、onclick="alert(xxx)、innerHTML、image.src.match("xxx")、id2.style.color="blue";、isNaN(id2)、document.write("糟糕!文档消失了。")、alert(id2.outerHTML)、id2.className="id06";、onclick="return registe"
<html> <head> <meta charset="utf-8"> <title>javascript</title&g ...
- python2行代码调用程序
import win32api win32api.ShellExecute(0, 'open', r'C:\Users\TOPFEEL\AppData\Local\Postman\app-5.5.0\ ...
- 15 C#中的条件执行,if else
在这一节的练习中,给大家介绍C#编程中的一个重要部分,条件执行.也就是If else语句.我们现实生活中的很多复杂的推理都可以用这个语法实现. If else语句的常规的样子,如下面所示. if (测 ...
- 转载pcb设计详细版
http://www.51hei.com/bbs/dpj-52438-1.html 详细的altium designer制作PCB步骤,按照步骤一步步的学习就会自己制作PCB模型 目 录 实验三 层 ...
- web安全测试--XSS(跨站脚本)与CSRF
XSS攻击原理 反射型 发出请求时,xss代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,xss代码随响应内容一起传回浏览器,最后浏览器解析执行xss代码.这个过程像一次反射,故叫反射 ...
- 后台接收不到postman发送的xml参数的解决办法
首先在body下复制需要传的xml: 然后点击url右边的Params,添加key和value.value和body下的xml是一样的: 最后点击send,后台就能接收到参数了.
- 好用的sublime插件以及快捷键
管理插件:使用Ctrl+`(Esc键下方)快捷键或者通过View->Show Console菜单打开命令行 import urllib.request,os,hashlib; h = '2915 ...
- Spring框架之控制反转和依赖注入
学Spring框架必须理解控制反转和依赖注入.下面各自举一个例子,来说明控制反转和依赖注入. IOC(控制反转):应用本身创建和维护的依赖对象:现在交由外部容器(Spring)来创建和维护:这个控制权 ...