hbase连接java(转载)

使用Phoenix通过jdbc连接hbase 使用Phoenix连接hbase数据库,PhoenixUtil连接hbase数据库,HbaseTest测试hbase数据库的创建、删除,及表数据的增删改查 立即下载

1、需要的jar包:

commons-codec-1.4.jar

commons-logging-1.0.4.jar

hadoop-0.20.2-core.jar

hbase-0.20.6.jar

log4j-1.2.15.jar

zookeeper-3.2.2.jar

 

2、已有表结构:

1、表名:scores

2、列族:

course:art

course:math

grade:

 

3、scan 'scores'的内容:

ROW COLUMN+CELL
Jerry column=course:art, timestamp=1301294630194, value=80
Jerry column=course:math, timestamp=1301294630132, value=100
Jerry column=grade:, timestamp=1301294630073, value=2
Jim column=course:art, timestamp=1301294630363, value=97
Jim column=course:math, timestamp=1301294630305, value=100
Jim column=grade:, timestamp=1301294630247, value=3
Tom column=course:art, timestamp=1301294630015, value=97
Tom column=course:math, timestamp=1301294629987, value=87
Tom column=grade:, timestamp=1301294629931, value=1

 

 

package org.myhbase;


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.KeyValue;

import org.apache.hadoop.hbase.client.Get;

import org.apache.hadoop.hbase.client.HTable;

import org.apache.hadoop.hbase.client.Result;

import org.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.filter.FilterList;

import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;

import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;

import org.apache.hadoop.hbase.io.Cell;

import org.apache.hadoop.hbase.util.Bytes;


public class HBaseBasic03 {

private static HBaseConfiguration hbaseConfig=null;

static{

Configuration config=new Configuration();

config.set("hbase.zookeeper.quorum","192.168.10.149,192.168.10.44,192.168.10.49");

config.set("hbase.zookeeper.property.clientPort", "2181");

hbaseConfig=new HBaseConfiguration(config);

}

public static void selectByRowKey(String tablename,String rowKey) throws IOException{

HTable table=new HTable(hbaseConfig,tablename);

Get g = new Get(Bytes.toBytes(rowKey));

Result r=table.get(g);

for(KeyValue kv:r.raw()){

System.out.println("column: "+new String(kv.getColumn()));

System.out.println("value: "+new String(kv.getValue()));

}

}

public static void selectByRowKeyColumn(String tablename,String rowKey,String column) throws IOException{

HTable table=new HTable(hbaseConfig,tablename);

Get g = new Get(Bytes.toBytes(rowKey));

g.addColumn(Bytes.toBytes(column));

Result r=table.get(g);

for(KeyValue kv:r.raw()){

System.out.println("column: "+new String(kv.getColumn()));

System.out.println("value: "+new String(kv.getValue()));

}

}

public static void selectByFilter(String tablename,List<String> arr) throws IOException{

HTable table=new HTable(hbaseConfig,tablename);

FilterList filterList = new FilterList();

Scan s1 = new Scan();

for(String v:arr){ // 各个条件之间是“与”的关系

String [] s=v.split(",");

filterList.addFilter(new SingleColumnValueFilter(Bytes.toBytes(s[0]),

Bytes.toBytes(s[1]),

CompareOp.EQUAL,Bytes.toBytes(s[2])

)

);

// 添加下面这一行后,则只返回指定的cell,同一行中的其他cell不返回

// s1.addColumn(Bytes.toBytes(s[0]), Bytes.toBytes(s[1]));

}

s1.setFilter(filterList);

ResultScanner ResultScannerFilterList = table.getScanner(s1);

for(Result rr=ResultScannerFilterList.next();rr!=null;rr=ResultScannerFilterList.next()){

for(KeyValue kv:rr.list()){

System.out.println("row : "+new String(kv.getRow()));

System.out.println("column : "+new String(kv.getColumn()));

System.out.println("value : "+new String(kv.getValue()));

}

}

}

public static void main(String [] args) throws IOException{

// 按rowkey查询,查询Tom行的所有cell

HBaseBasic03.selectByRowKey("scores","Tom");

// 按rokey 和 column 来查询,查询Tom行course列族的所有列值

HBaseBasic03.selectByRowKeyColumn("scores","Tom","course");

// Filter多条件查询,条件:查询 course列族中art列值为97 ,且 course列族中math列值为100的行

List<String> arr=new ArrayList<String>();

arr.add("course,art,97");

arr.add("course,math,100");

HBaseBasic03.selectByFilter("scores",arr);

}

}



1.连接HBase中的表testtable,用户名:root,密码:root

public void ConnectHBaseTable()
{
Configuration conf = new Configuration();
conf.set("hadoop.job.ugi", "root,root");
HBaseConfiguration config = new HBaseConfiguration();
try
{
table = new HTable(config, "testtable");
}catch(Exception e){e.printStackTrace();}
}

2.根据行名name获得一行数据,存入Result.注意HBase中的表数据是字节存储的。

下面的例子表示获得行名为name的行的famA列族col1列的数据。

String rowId = "name";
Get get = new Get(rowId);
Result result = hTable.get(get);
byte[] value = result.getValue(famA, col1);
System.out.println(Bytes.toString(value));

3.向表中存数据

下面的例子表示写入一行。行名为abcd,famA列族col1列的数据为"hello world!"。

byte[] rowId = Bytes.toBytes("abcd");
byte[] famA = Bytes.toBytes("famA");
byte[] col1 = Bytes.toBytes("col1");
Put put = new Put(rowId).
add(famA, col1, Bytes.toBytes("hello world!"));
hTable.put(put);

4.扫描的用法(scan):便于获得自己需要的数据,相当于SQL查询。

byte[] famA = Bytes.toBytes("famA");
byte[] col1 = Bytes.toBytes("col1");

HTable hTable = new HTable("test");

//表示要查询的行名是从a开始,到z结束。
Scan scan = new Scan(Bytes.toBytes("a"), Bytes.toBytes("z"));

//用scan.setStartRow(Bytes.toBytes(""));设置起始行

//用scan.setStopRow(Bytes.toBytes(""));设置终止行

 

//表示查询famA族col1列

scan.addColumn(famA, col1);

//注意,下面是filter的写法。相当于SQL的where子句

//表示famA族col1列的数据等于"hello world!"
SingleColumnValueFilter singleColumnValueFilterA = new SingleColumnValueFilter(
famA, col1, CompareOp.EQUAL, Bytes.toBytes("hello world!"));
singleColumnValueFilterA.setFilterIfMissing(true);

//表示famA族col1列的数据等于"hello hbase!"
SingleColumnValueFilter singleColumnValueFilterB = new SingleColumnValueFilter(
famA, col1, CompareOp.EQUAL, Bytes.toBytes("hello hbase!"));
singleColumnValueFilterB.setFilterIfMissing(true);

//表示famA族col1列的数据是两者中的一个
FilterList filter = new FilterList(Operator.MUST_PASS_ONE, Arrays
.asList((Filter) singleColumnValueFilterA,
singleColumnValueFilterB));

scan.setFilter(filter);

ResultScanner scanner = hTable.getScanner(scan);
//遍历每个数据
for (Result result : scanner) {
System.out.println(Bytes.toString(result.getValue(famA, col1)));
}

5.上面的代码容易出错的地方在于,需要导入HBase的类所在的包。导入时需要选择包,由于类可能出现在HBase的各个子包中,所以要选择好,下面列出常用的包。尽量用HBase的包

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.FilterList;
import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;
import org.apache.hadoop.hbase.filter.FilterList.Operator;
import org.apache.hadoop.hbase.util.Bytes;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

 

6.下面列出HBase常用的操作

(1)时间戳到时间的转换.单一的时间戳无法给出直观的解释。

public String GetTimeByStamp(String timestamp)
{

long datatime= Long.parseLong(timestamp);
Date date=new Date(datatime);
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
String timeresult=format.format(date);
System.out.println("Time : "+timeresult);
return timeresult;
}

(2)时间到时间戳的转换。注意时间是字符串格式。字符串与时间的相互转换,此不赘述。

public String GetStampByTime(String time)
{
String Stamp="";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date;
try
{
date=sdf.parse(time);
Stamp=date.getTime()+"000";
System.out.println(Stamp);
}catch(Exception e){e.printStackTrace();}
return Stamp;

}

TC3XX - MCAL知识点(二十):CAN MCAL配置及代码实战(CAN/CANFD/extenen CAN) CAN驱动程序负责提供AUTOSAR指定的标准CAN通信服务。M_CAN单元是底层的CAN硬件单元,它由共享消息RAM(在AUTOSAR中称为硬件对象)的节点(在AUTOSAR中称为控制器)组成。CAN驱动提供以下服务:·初始化CAN控制器以控制CAN控制器的行为和状态·设置和修改CAN控制器的波特率配置·支持CAN和CAN FD帧的收发·在轮询和中断模式下,成功的帧传输通知,专用和FIFO消息的接收和总线事件通知·数据接收使用接收FIFO功能·假装网络模式处理·支持多读/写周期功能。 阅读详情

相关推荐

常见js手撕题及算法总结

设计一个lazyMan,实现以下功能: LazyMan(‘Tony’); // Hi I am Tony LazyMan(‘Tony’).sleep(10).eat(‘lunch’); // Hi I am Tony // 等待了10秒… // I am eating lunch LazyMan(‘Tony’).eat(‘lunch’).sleep(10).eat(‘dinner’); // H...

没有名字适合我的博客 3176

JDBC——java连接mysql、hive、hbase教程

JDBC模板一、准备工作1.1、创建Maven工程1.2、修改pom文件1.3、修改Project Structure1.4、修改Settings1.5、资源文件夹二、Java连接mysql2.1、添加依赖2.2、JDBC配置文件2.3、代码编写2.4、测试三、Java连接hive3.1、添加依赖3.2、配置文件3.3、代码编写3.4、测试四、Java连接hbase4.1、添加依赖4.2、windows主机映射4.3、代码编写 一、准备工作 1.1、创建Maven工程 工程ID Maven工作目录 保

weixin_48482704的博客 1701

NVIDIA DRIVE SDK深度解析(一)——核心组件与安全架构设计

本文深度解析NVIDIA DRIVE SDK的核心组件与安全架构设计,涵盖DriveOS、加速库和应用框架三层架构,以及虚拟化与安全隔离机制。重点探讨了安全岛设计、媒体处理流水线和功能安全监控体系,为开发者提供自动驾驶系统开发的实战建议和性能优化技巧。

weixin_28704565的博客 561

HBase JDBC连接

HBase JDBC连接_周天祥的博客-优快云博客_jdbc连接hbase

lzyzl_的博客 512

UVM和System verilog笔记总结(四)

virtual sequence 即虚seq,用于管理多个实sequence的执行顺序。 下面有三个sequence,此时需要virtual sequence去管理这三个的顺序。 virtual sequence和virtual sequencer需要成对写,使用例化实的sequence和sequencer控制: 此时在virtual sequence里面启动,而不是之前在test.sv里面用default或start函数启动。具体方法如下:先例化 再启动,用 `uvm_do_on 实sequence

weixin_42655118的博客 641

Python实战:逐笔高频因子构建与回测全流程解析

本文详细解析了使用Python构建与回测逐笔高频因子的全流程。从逐笔数据的价值与清洗入手,通过实战代码演示了‘大买成交金额占比’因子的计算逻辑,并重点阐述了因子正交化处理的重要性以剔除风格影响。最后,提供了一个经典的分位数回测框架来验证因子有效性,并分享了数据质量、计算效率与过拟合等核心避坑指南。

grass的博客 391

Hbase 连接的几种方式

1. HBase连接的方式概况 主要分为: 纯JavaAPI读写HBase的方式; Spark读写HBase的方式; Flink读写HBase的方式; HBase通过Phoenix读写的方式; 第一种方式是HBase自身提供的比较原始的高效操作方式,而第二、第三则分别是Spark、Flink集成HBase的方式,最后一种是第三方插件Phoenix集成的JDBC方式,Phoenix集成的JDBC操作方式也能在Spark、Flink中调用。 注意: 这里我们使用HBase2.1.2版本,flin.

Baron_ND的博客 5726

Godot 4.x 实现 JRPG 回合制战斗系统:架构、状态机与实战优化

游戏开发中,状态机是管理复杂逻辑流转的核心设计模式,尤其在回合制战斗这类事件驱动的场景中。其原理是通过定义有限的状态和明确的转移条件,来控制系统在不同阶段的行为,从而实现清晰、可维护的流程控制。这项技术的价值在于能够将杂乱的条件判断代码结构化,降低模块间的耦合度,提升代码的可读性和可扩展性。在游戏开发领域,状态机广泛应用于角色AI、UI流程、战斗系统等场景。本文以Godot引擎为例,深入探讨如何运用节点与信号驱动架构,构建一个健壮的JRPG(日式角色扮演游戏)回合制战斗系统。内容涵盖从核心的**状态机**设

weixin_33749242的博客 499

JDBC-连接hbase

代码: public class HBASEClientDemo { @Test public void createTable() throws IOException { //1.获取hbase连接,配置 //hbase.zookeeper.property.clientPort Configuration conf = HBaseConfiguration.create(); //ATTENTION PL

weixin_50831726的博客 2878

OpenCV 开闭运算

开运算和闭运算是将腐蚀和膨胀按照一定的次序进行处理。 但这两者并不是可逆的,即先开后闭并不能得到原来的图像。 开运算 开运算是先腐蚀后膨胀,其作用是:分离物体,消除小区域。特点:消除噪点,去除小的干扰块,而不影响原来的图像。 闭运算 闭运算与开运算相反,是先膨胀后腐蚀,作用是消除/“闭合”物体里面的孔洞,特点:可以填充闭合区域。 cv.morphologyEx(img, op, kernel) img: 要处理的图像 op: 处理方式:若进行开运算,则设为cv.MORPH_OPEN,若进行闭

꧁༺ʚvv༒catɞ༻꧂的博客 949

2023华为od机试C卷【最富裕的小家庭】C语言 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 499

JDBC操作HBase

什么是JDBC?         JDBC 规范定义接口,具体的实现由各大数据库厂商来实现。         JDBC 是 Java 访问数据库的标准规范,真正怎么操作数据库还需要具体的实现类,也就是数据库驱动。每个数据库厂商根据自家数据库的通信格式编写好自己数据库的驱动。所以我们只需要会调用 JDBC 接口中的方法即可,数据库驱动由数据库厂商提供。

wsjslient的博客 2382

一个超酷的开源uHand2.0机械手掌项目

uHand2.0是深圳乐幻索尔公司开源的一款机械手掌,它长下面这个样子:1、uHand2.0外观图之前在公众号就分享过视频:学习嵌入式可以带娃,不信你们看2、uHand2.0硬件原理图看...

Bruce.yang的嵌入式之旅 4456

java phoenix 连接hbase

1 <dependency> 2 <groupId>org.apache.phoenix</groupId> 3 <artifactId>phoenix-core</artifactId> 4 <version>5.0.0-HBase-2.0</version> 5 </d...

weixin_30546933的博客 598

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Phoenix使用JAVA编程连接HBase-0.96.0

首先,需要将《使用Phoenix连接HBase-0.96.0》

iAm333的专栏 5215

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HBase之——部署经验与坑总结

转载请注明出处:https://blog.youkuaiyun.com/l1028386804/article/details/88696276 1.本地单机部署hbase,想要使用独立zookeeper,不使用自带的 vim conf/hbase-env.sh export HBASE_MANAGES_ZK=false 设置不使用自带zookeeper,但是总是报错: Could not sta...

冰河的专栏 2191

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Hbase java API 的方法

使用java API方法 对hbase的操作 创建hbase表 添加数据 批量添加 查询 扫描数据 注:必须导入依赖的jar 1.使用API创建表 package com.bw.hbase; import java.io.IOException; import org.apache.hadoop.conf.Configuration; im...

weixin_30402085的博客 131

hbase java 编程,(转载)Hbase -- Java客户端编程

本文以HBase 0.90.2为例,介绍如何在Windows系统,Eclipse IDE集成环境下,使用Java语言,进行HBase客户端编程,包含建立表、删除表、插入记录、删除记录、各种方式下的查询操作等。1. 准备工作1、下载后安装jdk包(这里使用的是jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008);2、下载eclipse,解压到本地(这里使用...

weixin_42118423的博客 331

在Java连接hbase时出现的问题

问题1: java.net.ConnectException: Connection refused: no further information zookeeper.ClientCnxn: Session 0x0 for server null zookeeper未启动,或无法连接,从查看各节点zookeeper启动状态、端口占用、防火墙等方面查看原因。 问题2: ...

weixin_30526593的博客 380

java连接hbase_Spring Boot 2.x :通过 spring-boot-starter-hbase 集成 HBase

摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢!本文内容HBase 简介和应用场景spring-boot-starter-hbase 开源简介集成 HBase 实战小结摘录:Many a Man thinks he is buying Pleasure,when he is really sellinghims...

weixin_39633134的博客 253

通过JavaAPI使用HBase

1.准备工作 (1) 启动zookeeper服务,我的是在本地启动zookeeper /usr/local/zookeeper/bin$ sudo zkServer.sh start (2) 启动HBase和HBase shell 启动HBase: /usr/local/hbase/bin下启动start-hbase.sh 启动HBase shell /usr/l...

weixin_34205076的博客 97

hbase获取某个列簇下的所有列 java

HBase中获取某个列簇下的所有列 HBase是一个开源的、分布式的、可扩展的NoSQL数据库,它基于列簇的操作模型。在HBase中,数据存储不是以传统的行和列的形式存在的,而是以列簇(Column Family)和列的组合形式存储。因此,有时你可能需要获取某个列簇下的所有列。本文将介绍如何在Java中使用HBase客户端...

weixin_36957101的博客 486

java操作hbase,增删查改

java操作hbase,增删查改 例子功能说明 不说废话,直接开始,撸代码。hbase的介绍查看其他博主文章 首先插入三个用户数据,遍历发现是没有问题的,之后删除一个用户,再次查看所有用户,发现该用户成功删除。 重要代码都有注释说明,这样应该比我贴完代码讲解看的舒服,有问题可留言评论。 pom依赖 <!-- hbase --> <dependency> ...

下雨了_简的博客 648

Hbase 操作工具类

依赖jar <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.0.5<...

weixin_33697898的博客 115

api 原生hbase_如何使用Java API读写Hbase

展开全部一般情况下,我们使用Linux的shell命令,就可以非62616964757a686964616fe4b893e5b19e31333363373832常轻松的操作Hbase,例如一些建表,建列簇,插值,显示所有表,统计数量等等,但有时为了提高灵活性,我们也需要使用编程语言来操作Hbase,当然Hbase通过Thrift接口提供了对大多数主流编程语言的支持,例如C++,PHP,Python...

weixin_39774445的博客 179

2.3-2.6 HBase java API

一、get 、put、delete、scan1、代码package com.beifeng.senior.hadoop.hbase; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.CellUtil; import or...

weixin_30883777的博客 481
上一篇: HBASE&nbsp;SHELL基本命令
下一篇: HBase&nbsp;0.94版本新特性、性能优化详…
nuoline
博客等级 码龄18年 345粉丝 247原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值