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. Django day 33 vue中使用element-ui的使用,课程的相关介绍,vue绑定图片,课程列表接口,课程详情页面

    一:vue中使用element-ui的使用, 二:课程的相关介绍, 三:vue绑定图片, 四:课程列表接口, 五:课程详情页面

  2. mysql的大数据量的查询

    mysql的大数据量查询分页应该用where 条件进行分页,limit 100000,100,mysql先查询100100数据量,查询完以后,将 这些100000数据量屏蔽去掉,用100的量,但是如果 ...

  3. 【懒人专用系列】Xind2TestCase的初步探坑

    公司最近说要弄Xind2TestCase,让我们组先试用一下 解释:https://testerhome.com/topics/17554 github项目:https://github.com/zh ...

  4. 全面学习ORACLE Scheduler特性(3)使用Programs

    二.使用Programs 在论坛中偶尔见过有人讨论如何在ORACLE中执行操作系统命令,或是ORACLE数据库外的应用.应该说在9i及之前的版本中,虽然说并非完全无法实现(其实还是有多种方式能够变相实 ...

  5. MySql学习笔记(2)-简介

    一.什么是MySql MySql是开放源代码的数据库管理系统之一: MySql是一个支持多线程高并发多用户的关系型数据库管理系统: MySql最擅长的是查询性能,而不是事务处理(需要借助第三方存储引擎 ...

  6. Android 你知道界面布局嵌套多少层之后会Crash吗

    我们先放一张Hierarchy Viewer的图:(模拟器Android4.4) 看到数字6了吗,那个RelativeLayout是MainActivity的根ViewGroup, 而在Relativ ...

  7. ionic3带参数返回原来页面

    最近用ionic3+angular4做项目.我遇到了个问题,我返回原来页面时一般都会调用this.navCtrl.pop()方法,但这个方法不能携带参数.怎么办? 可以写个回调方法. 我在a页面定义个 ...

  8. Errors reported here must be corrected before the service can be started

    场景: 安装.配置Apache24时候,最后会给出提示,如图:Errors reported here must be corrected before the service can be star ...

  9. Python自动监控错误日志

    平时在查看日志的时候打开满屏的日志,看上去有点凌乱.于是写个Python脚本过滤出想要看的错误的日志.直接上脚本 脚本示例 def read_log(logname,keyword): tell = ...

  10. HDU_1520_Anniversary party_树型dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java ...