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(单节点)的更多相关文章

  1. Java 操作 HBase 教程

    Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...

  2. Hbase深入学习(六) Java操作HBase

    Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...

  3. Java操作hbase总结

    用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...

  4. java操作Hbase实例

    所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.u ...

  5. 错误: 找不到或无法加载主类 java操作hbase出错

    用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...

  6. HBase单节点的安装与配置

    HBase的安装配置1.下载:http://mirror.bit.edu.cn/apache/hbase/stable/   hbase-1.2.6-bin是直接编译好的,直接安装.   hbase- ...

  7. Redis:Java链接redis单节点千万级别数据 写入,读取 性能测试

    本文是对Redis 单节点,针对不同的数据类型,做插入行测试. 数据总条数为:10058624 环境说明:             Redis 未做任何优化, 单节点    (服务器上, 内存64G) ...

  8. 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 ...

  9. 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

随机推荐

  1. 洛谷 P1433 吃奶酪(记忆化)

    题目描述 房间里放着n块奶酪.一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在(0,0)点处. 输入输出格式 输入格式: 第一行一个数n (n<=15) 接下来每行2个实数,表示第i块 ...

  2. Ajax 知识点总结

    1.AJAX的优缺点都有什么? 最大的一点是页面无刷新,用户的体验非常好.使用异步方式与服务器通信,具有更加迅速的响应能力.可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻 ...

  3. 枚举+贪心 HDOJ 4932 Miaomiao's Geometry

    题目传送门 /* 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则 ...

  4. C# 调用非托管函数

    C#通过DllImport可以直接调用Windows中的一些功能.C++中已经编写好的一些方法: DllImport所在的名字空间:System.Runtime.InteropServices; Dl ...

  5. C:\Windows\System32\drivers\etc\hosts文件显示

     attrib -s -h C:\Windows\System32\drivers\etc\hosts 

  6. React组件的防呆机制(propTypes)

    Prop验证 随着应用不断变大,为了保证组件被正确使用变得越来越重要.为此我们引入propsTypes.React.PropTypes提供很多验证器(valodator)来验证传入的数据的有效性.当向 ...

  7. 三维重建:GitHub百度Apollo 2.0

    GitHub:https://github.com/ApolloAuto/apollo 1. 关于Apollo的数据:Apollo的数据会如何开放? 自动驾驶数据将包括具有高分辨率图像和像素级别标注的 ...

  8. CPU位数、操作系统位数、机器字长、C/C++基本数据类型长度

    1.CPU位数=CPU中寄存器的位数=CPU能够一次并行处理的数据宽度(位数)=数据总线宽度: //现在的计算机处理器一般都是64位,这是硬件的事. 2.CPU为了实现其功能设计了指令集,即是CPU的 ...

  9. jmeter普通的接口测试

    摘自:后知者.https://www.cnblogs.com/houzhizhe/p/6838731.html jmeter可以做接口测试,其中接口测试的简单操作包括做http脚本(发get/post ...

  10. java动态代理实现与原理详细分析(【转载】By--- Gonjan )

    [转载]By---Gonjan  关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式     ...