需要导入jar包

  • $HBASE_HOME/lib下的所有jar包
  • $HADOOP_HOME/share/hadoop/common的所有jar包
package com.harley.hbase.test;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import java.io.IOException;
import java.util.List; public class HbaseTest{ protected Connection connection = null;
protected Admin admin = null; /**
* 创建表所需参数
*/
protected String tableName = "mydata:psn2";
protected String cf = "cf"; @Before
public void init()
{
System.out.println("====init....====");
System.setProperty("hadoop.home.dir","D:/Java/bigdata/bigdata/hadoop-3.2.1");
try {
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
connection = ConnectionFactory.createConnection(conf);
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
} } /**
* get
*/
@Test
public void get()
{
Table table = null; try {
table = this.connection.getTable(TableName.valueOf(this.tableName));
/**
* 参数为 rowkey
*/
Get get = new Get("student".getBytes("UTF-8"));
Result result = table.get(get); String rowkey = new String(result.getRow(),"UTF-8");
String name = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"name".getBytes("UTF")).getValueArray());
String age = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"age".getBytes("UTF")).getValueArray());
String gender = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"gender".getBytes("UTF")).getValueArray());
System.out.println("---rowkey--->"+rowkey+"----name--->"+name+"---age---->"+age+"----gender--->"+gender); } catch (IOException e) {
e.printStackTrace();
} finally { try {
if(table!=null){
table.close();
table=null;
}
} catch (IOException e) {
e.printStackTrace();
} } } /**
* scan
*/
@Test
public void scan()
{
Table table = null;
try {
table = this.connection.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
ResultScanner scanner = table.getScanner(scan); int count = 1; for (Result result : scanner) {
String rowkey = new String(result.getRow(), "UTF-8");
String name = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"name".getBytes("UTF-8")).getValueArray());
String age = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"age".getBytes("UTF-8")).toString());
String gender = new String(result.getColumnLatestCell(this.cf.getBytes("UTF-8"),"gender".getBytes("UTF-8")).toString()); System.out.println("--条数:"+count+"---rowkey=>"+rowkey+"----name=>"+name+"----age=>"+age+"----gender=>"+gender);
count++;
} } catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(table!=null){
table.close();
table=null;
}
} catch (IOException e) {
e.printStackTrace();
}
} } /**
* put
*/
@Test
public void put()
{
Table table = null;
try {
table = this.connection.getTable(TableName.valueOf(tableName));
/**
* rowkey
*/
Put put = new Put("student01".getBytes("UTF-8")); /**
* 添加键和值
*/
// put.addColumn(this.cf.getBytes("UTF-8"),"name".getBytes("UTF-8"),"老白".getBytes("UTF-8"));
// put.addColumn(this.cf.getBytes("UTF-8"),"age".getBytes("UTF-8"),"32".getBytes("UTF-8"));
// put.addColumn(this.cf.getBytes("UTF-8"),"gender".getBytes("UTF-8"),"男".getBytes("UTF-8")); put.addColumn(this.cf.getBytes("UTF-8"),"name".getBytes("UTF-8"),"Tom".getBytes("UTF-8"));
put.addColumn(this.cf.getBytes("UTF-8"),"age".getBytes("UTF-8"),"20".getBytes("UTF-8"));
put.addColumn(this.cf.getBytes("UTF-8"),"gender".getBytes("UTF-8"),"man".getBytes("UTF-8")); /**
* 相当于事务中的commit
*/
table.put(put);
System.out.println("————————put success——————"); } catch (IOException e) {
e.printStackTrace();
} finally { try {
if(table!=null)
table.close();
table=null;
} catch (IOException e) {
e.printStackTrace();
} } } /**
* create
*/
@Test
public void create()
{
System.out.println("====create....====");
try {
TableDescriptorBuilder tdb = TableDescriptorBuilder.newBuilder(TableName.valueOf(tableName));
ColumnFamilyDescriptor columnFamilyDescriptor = ColumnFamilyDescriptorBuilder.newBuilder(this.cf.getBytes("UTF-8")).build();
TableDescriptor tableDescriptor = tdb.setColumnFamily(columnFamilyDescriptor).build();
this.admin.createTable(tableDescriptor);
System.out.println("-------create success-------"); } catch (IOException e) {
e.printStackTrace();
} } /**
* list_namespace
*/
@Test
public void list_namespace()
{ try {
NamespaceDescriptor[] namespaceDescriptors = admin.listNamespaceDescriptors(); int count = 1; for (NamespaceDescriptor namespaceDescriptor : namespaceDescriptors) { System.out.println(count+"----------"+namespaceDescriptor.getName());
count++;
} } catch (IOException e) {
e.printStackTrace();
} } /**
* list
*/
@Test
public void list()
{
System.out.println("——————————list....———————————"); try { List<TableDescriptor> tableDescriptors = admin.listTableDescriptors();
int count=1;
for (TableDescriptor tableDescriptor : tableDescriptors) { System.out.println(count+"====="+tableDescriptor.getTableName());
count++;
} } catch (IOException e) {
e.printStackTrace();
}
} @After
public void after()
{
System.out.println("====destroy....====");
try {
if(admin!=null){
admin.close();
admin=null;
}
if(connection!=null)
{
connection.close();
connection=null;
}
} catch (IOException e) {
e.printStackTrace();
} } }

— 要养成终生学习的习惯 —

hbase - [04] java访问hbase的更多相关文章

  1. HBase(一): c#访问hbase组件开发

    HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了 ...

  2. HBase(二): c#访问HBase之股票行情Demo

    上一章完成了c#访问hbase的sdk封装,接下来以一个具体Demo对sdk进行测试验证.场景:每5秒抓取指定股票列表的实时价格波动行情,数据下载后,一方面实时刷新UI界面,另一方面将数据放入到在内存 ...

  3. docker 安装 hbase安装 java连接hbase (mac环境)

    docker 安装 https://hub.docker.com/editions/community/docker-ce-desktop-mac 下载地址 下载完之后,安装app一样安装就好 安装完 ...

  4. Java访问Hbase

    1.kerberos验证 a.下载对应版本JCE(Java Cryptography Extension),解压拷贝local_policy.jar/US_export_policy.jar到$JAV ...

  5. HBase(2) Java 操作 HBase 教程

    目录 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 FAQ 参考文档 一.简介 在上一篇文章 HBase 基础入门 中,我们已经介绍了 HBase 的一些基本概 ...

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

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

  7. Java 操作 HBase 教程

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

  8. java操作Hbase实例

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

  9. JAVA API访问Hbase org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=32

    Java使用API访问Hbase报错: 我的hbase主节点是spark1   java代码访问hbase的时候写的是ip 结果运行程序报错 不能够识别主机名 修改主机名     修改主机hosts文 ...

  10. Java 调用 Hbase API 访问接口实现方案

    HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...

随机推荐

  1. k3d 入门:在 Docker 中运行 k3s

    k3d 入门:在 Docker 中运行 k3s https://www.xtplayer.cn/k3d/introduction-k3d-run-k3s-docker-src/#The-"S ...

  2. 共建共荣金融生态!金融级数字底座“源启”与GoldenDB数据库完成互认证

    近日,中电金信金融级数字底座"源启"顺利与金篆信科GoldenDB分布式数据库完成互认证.GoldenDB数据库安全稳定运行在"源启"之上,整体性能表现卓越,进 ...

  3. EverEdit插件-CHM助手:一种免费、高效的CHM手册制作方式

    1 EverEdit插件-CHM助手:一种免费.高效的CHM手册制作方式 1.1 前言   业界制作CHM手册的工具多如牛毛,高贵的商业工具如:HelpNDoc.Help+Manual.HelpSmi ...

  4. 用Python让两组数据纵向排序

    一.引言 在数据处理和分析中,排序是一项非常基础且重要的操作.排序可以帮助我们更好地理解数据,发现数据中的模式和规律.在Python中,我们可以使用多种方法对数据进行排序.本文将详细介绍如何使用Pyt ...

  5. 龙哥量化:期货软件中红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手"是什么意思?(转载的)

    期货投资者在看盘时,会看到红红绿绿的"多开,空开,空平,多平,多换,空换,双开,双平,换手",以快期专业版为例,如下图1所示: 图1.红绿开平数据(快期专业版) 这些数据里面的红色 ...

  6. Qt音视频开发系列文章导航

    文章 链接 1-vlc解码播放 https://qtchina.blog.csdn.net/article/details/107742836 2-vlc回调处理 https://qtchina.bl ...

  7. Qt开源作品27-鼠标定位十字线

    一.前言 上次有个群友在咨询这个问题,如何用Qt绘制一个鼠标定位的十字线,花了两分钟整了个,最没有含金量的一个demo,就是用drawline绘制了两条线,这个效果在经典的CAD软件中很常用,还有一些 ...

  8. Qt编写的项目作品31-PDF阅读器(雨田哥作品)

    一.功能特点 仿WPS界面. 预览PDF文件. 支持PDF预览放大.缩小. 支持目录预览查看. 支持目录点击跳转页查看. 支持页数指定跳转. 支持上一页.下一页.首页.尾页跳转. 支持鼠标拖拽滑动预览 ...

  9. IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)

    1.引言 在中大型IM系统中,聊天消息的唯一ID生成策略是个很重要的技术点.不夸张的说,聊天消息ID贯穿了整个聊天生命周期的几乎每一个算法.逻辑和过程,ID生成策略的好坏有可能直接决定系统在某些技术点 ...

  10. 开源即时通讯IM框架MobileIMSDK的H5端开发快速入门

    ► 相关链接: ① MobileIMSDK-H5端的详细介绍 ② MobileIMSDK-H5端的开发手册new(* 精编PDF版) 一.技术准备 您是否已对Web端即时通讯技术有所了解? 1)新手入 ...