package cn.gaiay.hbase;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
public class Test {
// 声明静态配置
static Configuration conf = null;
static Connection connection = null;
static {
try{
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "hadoop-01,hadoop-02,hadoop-03");
connection = ConnectionFactory.createConnection(conf);
}catch (Exception e){
e.printStackTrace();
}
}
/*
* 创建表
*
* @tableName 表名
*
* @family 列族列表
*/
public static void creatTable(String tableName, String[] family)
throws Exception {
Admin admin = connection.getAdmin();
HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(tableName));
for (int i = 0; i < family.length; i++) {
desc.addFamily(new HColumnDescriptor(family[i]));
}
if (admin.tableExists(TableName.valueOf(tableName))) {
System.out.println("table Exists!");
System.exit(0);
} else {
admin.createTable(desc);
System.out.println("create table Success!");
}
}
/*
* 为表添加数据(适合知道有多少列族的固定表)
*
* @rowKey rowKey
*
* @tableName 表名
*
* @column1 第一个列族列表
*
* @value1 第一个列的值的列表
*
* @column2 第二个列族列表
*
* @value2 第二个列的值的列表
*/
public static void addData(String rowKey, String tableName,
String[] column1, String[] value1, String[] column2, String[] value2)
throws IOException {
Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey
Table table = connection.getTable(TableName.valueOf(tableName));// HTabel负责跟记录相关的操作如增删改查等//
// 获取表
HColumnDescriptor[] columnFamilies = table.getTableDescriptor() // 获取所有的列族
.getColumnFamilies();
for (int i = 0; i < columnFamilies.length; i++) {
String familyName = columnFamilies[i].getNameAsString(); // 获取列族名
if (familyName.equals("article")) { // article列族put数据
for (int j = 0; j < column1.length; j++) {
put.addColumn(Bytes.toBytes(familyName),
Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j]));
}
}
if (familyName.equals("author")) { // author列族put数据
for (int j = 0; j < column2.length; j++) {
put.addColumn(Bytes.toBytes(familyName),
Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));
}
}
}
table.put(put);
System.out.println("add data Success!");
}
/*
* 根据rwokey查询
*
* @rowKey rowKey
*
* @tableName 表名
*/
public static Result getResult(String tableName, String rowKey)
throws IOException {
Get get = new Get(Bytes.toBytes(rowKey));
Table table = connection.getTable(TableName.valueOf(tableName));// 获取表
Result result = table.get(get);
for (Cell cell : result.listCells()) {
System.out.println("family:" + Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength()));
System.out.println("qualifier:" + Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));
System.out.println("value:" + Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()));
System.out.println("Timestamp:" + cell.getTimestamp());
System.out.println("-------------------------------------------");
}
return result;
}
/*
* 遍历查询hbase表
*
* @tableName 表名
*/
public static void getResultScann(String tableName) throws IOException {
Scan scan = new Scan();
ResultScanner rs = null;
Table table = connection.getTable(TableName.valueOf(tableName));
try {
rs = table.getScanner(scan);
for (Result r : rs) {
for (Cell cell : r.listCells()) {
System.out.println("row:" + Bytes.toString(cell.getRowArray(),cell.getRowOffset(),cell.getRowLength()));
System.out.println("family:"
+ Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getValueLength()));
System.out.println("qualifier:"
+ Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength()));
System.out
.println("value:" + Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength()));
System.out.println("timestamp:" + cell.getTimestamp());
System.out
.println("-------------------------------------------");
}
}
} finally {
rs.close();
}
}
/*
* 遍历查询hbase表
*
* @tableName 表名
*/
public static void getResultScann(String tableName, String start_rowkey,
String stop_rowkey) throws IOException {
Scan scan = new Scan();
scan.setStartRow(Bytes.toBytes(start_rowkey));
scan.setStopRow(Bytes.toBytes(stop_rowkey));
ResultScanner rs = null;
Table table = connection.getTable(TableName.valueOf(tableName));
try {
rs = table.getScanner(scan);
for (Result r : rs) {
for (Cell cell : r.listCells()) {
System.out.println("row:" + Bytes.toString(cell.getRowArray(),cell.getRowOffset(),cell.getRowLength()));
System.out.println("family:"
+ Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getValueLength()));
System.out.println("qualifier:"
+ Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength()));
System.out
.println("value:" + Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength()));
System.out.println("timestamp:" + cell.getTimestamp());
System.out
.println("-------------------------------------------");
}
}
} finally {
rs.close();
}
}
/*
* 查询表中的某一列
*
* @tableName 表名
*
* @rowKey rowKey
*/
public static void getResultByColumn(String tableName, String rowKey,
String familyName, String columnName) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 获取指定列族和列修饰符对应的列
Result result = table.get(get);
for (Cell cell : result.listCells()) {
System.out.println("family:"
+ Bytes.toString(cell.getFamilyArray(),cell.getFamilyOffset(),cell.getValueLength()));
System.out.println("qualifier:"
+ Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength()));
System.out
.println("value:" + Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength()));
System.out.println("timestamp:" + cell.getTimestamp());
System.out.println("-------------------------------------------");
}
}
/*
* 更新表中的某一列
*
* @tableName 表名
*
* @rowKey rowKey
*
* @familyName 列族名
*
* @columnName 列名
*
* @value 更新后的值
*/
public static void updateTable(String tableName, String rowKey,
String familyName, String columnName, String value)
throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName),
Bytes.toBytes(value));
table.put(put);
System.out.println("update table Success!");
}
/*
* 查询某列数据的多个版本
*
* @tableName 表名
*
* @rowKey rowKey
*
* @familyName 列族名
*
* @columnName 列名
*/
public static void getResultByVersion(String tableName, String rowKey,
String familyName, String columnName) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(Bytes.toBytes(rowKey));
get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));
get.setMaxVersions(5);
Result result = table.get(get);
for (KeyValue kv : result.list()) {
System.out.println("family:" + Bytes.toString(kv.getFamily()));
System.out
.println("qualifier:" + Bytes.toString(kv.getQualifier()));
System.out.println("value:" + Bytes.toString(kv.getValue()));
System.out.println("Timestamp:" + kv.getTimestamp());
System.out.println("-------------------------------------------");
}
/*
* List<?> results = table.get(get).list(); Iterator<?> it =
* results.iterator(); while (it.hasNext()) {
* System.out.println(it.next().toString()); }
*/
}
/*
* 删除指定的列
*
* @tableName 表名
*
* @rowKey rowKey
*
* @familyName 列族名
*
* @columnName 列名
*/
public static void deleteColumn(String tableName, String rowKey,
String falilyName, String columnName) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));
deleteColumn.addColumn(Bytes.toBytes(falilyName),
Bytes.toBytes(columnName));
table.delete(deleteColumn);
System.out.println(falilyName + ":" + columnName + "is deleted!");
}
/*
* 删除指定的列
*
* @tableName 表名
*
* @rowKey rowKey
*/
public static void deleteAllColumn(String tableName, String rowKey)
throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Delete deleteAll = new Delete(Bytes.toBytes(rowKey));
table.delete(deleteAll);
System.out.println("all columns are deleted!");
}
/*
* 删除表
*
* @tableName 表名
*/
public static void deleteTable(String tableName) throws IOException {
Admin admin = connection.getAdmin();
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
System.out.println(tableName + "is deleted!");
}
public static void main(String[] args) throws Exception {
// 创建表
String tableName = "blog2";
String[] family = { "article", "author" };
creatTable(tableName, family);
// 为表添加数据
String[] column1 = { "title", "content", "tag" };
String[] value1 = {
"Head First HBase",
"HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data.",
"Hadoop,HBase,NoSQL" };
String[] column2 = { "name", "nickname" };
String[] value2 = { "nicholas", "lee" };
addData("rowkey1", "blog2", column1, value1, column2, value2);
addData("rowkey2", "blog2", column1, value1, column2, value2);
addData("rowkey3", "blog2", column1, value1, column2, value2);
// 遍历查询
getResultScann("blog2", "rowkey4", "rowkey5");
// 根据row key范围遍历查询
getResultScann("blog2", "rowkey4", "rowkey5");
// 查询
getResult("blog2", "rowkey1");
// 查询某一列的值
getResultByColumn("blog2", "rowkey1", "author", "name");
// 更新列
updateTable("blog2", "rowkey1", "author", "name", "bin");
// 查询某一列的值
getResultByColumn("blog2", "rowkey1", "author", "name");
// 查询某列的多版本
getResultByVersion("blog2", "rowkey1", "author", "name");
// 删除一列
deleteColumn("blog2", "rowkey1", "author", "nickname");
// 删除所有列
deleteAllColumn("blog2", "rowkey1");
// 删除表
deleteTable("blog2");
}
}相关推荐
大数据HBase(五):HBase的相关操作JavaAPI方式
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点。 目录 系列历史文章 前言 HBase的相关操作-JavaAPI方式 一、需求说明 二、准备工作 1、创建IDEA Maven 项目 2、导入相关pom依赖 3、创建包结构和类 系列历史文章 2021年大数据HBase(四):HBase的相关操作-客户端命令式!【建议收藏】 2021年大数据HBase(三):HBase数据模型 2021年大数据HBase(二).
Hbase JavaAPI操作 基于1.2.x版本
###Hbase JavaAPI操作 (1.2.x) 市面上大部分的Hbase书籍都是针对0.98版本的,本次编辑采用1.2.X的操作 ####第一步 引入maven依赖 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.hbase&amp;amp;lt;/groupId&am
HBase 1.2.0 Javadoc API CHM
自行制作的HBase 1.2.0 Javadoc API CHM版本。内容抽取自官方站点网页
HBase看完这篇你还有什么不懂?(HBase API-1.2常用类及java代码实现)
一、基本类 1、Admin类 管理可以用于创建、删除、列出、启用和禁用表、添加和删除表列族以及其他管理操作。 2、Connection接口 一个集群连接,封装了与实际服务器的低级别单独连接以及与zookeeper的连接。 连接通过ConnectionFactory类实例化。 连接的生命周期由调用者管理,使用后必须调用close()连接以释放资源。 连接实现是线程安全的,因此客户端可以创建...
hbase1.2+java开发最小依赖jar包合集
hbase1.2+java开发最小依赖jar包合集
java开发hbase-1.2.1所需的jar包
java开发hbase-1.2.1所需的jar包
HBase数据库入门到精通-1.2API操作
使用Maven仓库管理jar包
秋叶ComfyUI整合包:一键部署AI绘画工作流,解决环境配置难题
在AI绘画和生成式AI领域,Stable Diffusion作为开源的扩散模型,为图像生成提供了强大的技术基础。其核心原理是通过学习数据分布,对随机噪声进行逐步去噪,最终生成高质量的图像。这项技术的价值在于极大地降低了专业图像创作的门槛,并推动了AIGC(人工智能生成内容)在艺术设计、游戏开发、广告营销等场景的广泛应用。然而,其典型工作流实现工具ComfyUI,在实际部署中常因Python环境、PyTorch版本与CUDA驱动之间的复杂依赖关系而受阻,尤其是面对NVIDIA 30系、40系及未来50系等不同
HBase 系列(六)——HBase Java API 的基本使用
一、简述 截至到目前 (2019.04),HBase 有两个主要的版本,分别是 1.x 和 2.x ,两个版本的 Java API 有所不同,1.x 中某些方法在 2.x 中被标识为 @deprecated 过时。所以下面关于 API 的样例,我会分别给出 1.x 和 2.x 两个版本。完整的代码见本仓库: Java API 1.x Examples Java API 2.x Exa...
亚博k210视觉模块与stm32双向通信
【代码】亚博k210视觉模块与stm32双向通信。
自制JS某课脚本
根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行
Hbase教程(四) Hbase数据库JavaAPI接口
Hbase是一个分布式的、面向列的开源数据库, HDFS文件操作常有两种方式,一种是命令行方式,即Hbase提供了一套与Linux文件命令类似的命令行工具。另一种是JavaAPI,即利用Hbase的Java库,采用编程的方式操作Hbase数据库。 目 录 1 软件下载及安装... 1 1.1 相关下载... 1 1.2 软件安装... 1 1.3 环境配置... 1 1.4 创建项目... 1 1.5 配置pox.xml文件... 1 1.6 配置po
Adobe Acrobat Pro(Adobe PDF) - 使用技巧
Adobe Acrobat Pro为Adobe出品的PDF查看和编辑软件,下文简称Adobe PDF,该软件功能强大,拥有查看PDF、编辑PDF、打印PDF、导出PDF、合并文件、组织页面、文本标注、注释、动作向导、等功能。本文介绍Adobe PDF的一些使用技巧,最后介绍软件设置。
大数据实验Hbase安装部署和使用javaapi调用
实验目的和要求 1.1 实验目的 理解HBase在Hadoop体系结构中的角色; 熟练使用HBase操作常用的Shell命令; 熟悉HBase操作常用的Java API。 1.2 实验软硬件环境 操作系统: Ubuntu19.04; Hadoop版本:3.2.0; HBase版本:2.2.1; JDK版本:jdk-13; Java IDE:Eclipse 4.3。 实验记录 2.1 安装Hbase 建议先自己安装zookeeper,我们不使用hbase自带的zookeepe.
多视图学习 (Multi-View Learning)
多视角/多视图学习(Multi-view learning)是陶大成提出的一个研究方向。我们都知道,在机器学习中样本可以用不同的特征(如图片可以用LBP、SIFT等特征)来表示,或者从不同的角度进行观察(如从前后左右观察一个对象),甚至是采用不同的传感器来观测(如RGB摄像头,Depth摄像头),这些不同的观测手段、角度或特征在多视角学习中称为“视角”。多视角学习通过对不同的视角进行统一分析和研究,希望能够得到更好的分类或聚类等等的效果。
基于AutoDL复现A-LOAM
Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在autodl上面租服务器,地区我租的重庆A区的,GPU我选择的是RTX4090,基础镜像选择的是Miniconda / conda3 / 3.8(ubuntu20.04)/11.6。在AutoDL中我使用的方式是先将该数据集先下载到自己的电脑上,然后再上传到虚拟机中。用MobaXterm解决该问题!搜到的一个解决方式:该问题属于ceres版本问题,将A-LOAM下的。
Maven 构建Java项目 通过JavaApi 操作 Hbase
博客内容在windows环境下使用Maven工具构建Java项目,通过JavaApi操作Hbase构建前提已经搭建好hadoop大数据平台(我的hadoop基本配置为:3台主机,主机名称为master,slave1,slave2)hbase-site.xml配置为: <configuration> <property> <name>hbas...
华为海思2026届数字IC秋招笔试高频考点解析与实战技巧(2025最新版)
本文深入解析华为海思2026届数字IC秋招笔试的高频考点与实战技巧,涵盖时序优化、低功耗设计、DFT规则等核心模块。针对2025年最新真题,提供详细的解题思路和工程经验,帮助考生高效备考。特别关注SystemVerilog约束随机测试等新增考点,助力考生在秋招笔试中脱颖而出。
Mac环境部署单机版Hbase及使用JavaAPI对Hbase增删改查
HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。HBase 良好的分布式架构设计为海量数据的快速存储、随机访问提供了可能,基于数据副本机制和分区机制可以轻松实现在线扩容、缩容和数据容灾,是大数据领域中 Key-Value 数据结构存储最常用的数据库方案。Hbase官网:https://hbase.apache.org/ 官方文档:https://hbase.apach
100天精通Python(爬虫篇)——第114天:爬虫基础模块之requests基础入门
一、request模块大总结 1. 下载安装 2. 常用属性或方法 3. response.text和response.content的区别: 4. 发送带headers参数请求 5. 发送带参数请求 6. 在headers参数中携带cookie 7. 超时参数timeout的使用 8. proxies代理参数的使用 9. 发送post请求...............
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
HBase(第三节)HBase通过JavaAPI与MapReduce结合、HBase结合hive使用、使用sqoop导入导出Hbase
HBase通过JavaAPI与MapReduce结合 通过MapReduce实现Hbase读写 目的:通过MapTask读取Hbase某个表中的数据,再用ReduceTask将该表的某些字段写到另一个Hbase表中。 1、在hbase-shell中创建myuser2表 hbase(main):010:0> create 'myuser2','f1' myuser2作为本实验接收数据的表,读取数据的表出自HBase(第二节)HBase的JavaAPI、HBase底层原理和HBase的三个重要机制的my
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
Apache HBase 2.x JavaAPI操作(上)
Hbase 1.x版本和2.x版本,虽然进行了大量的重构和优化,一些API也已经能抛弃,单核心API没有改多少。 本处:HBASE 2.0.5版本 1.测试准备 1)获取HBASE配置对象 Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum","mycat01,mycat02,m...
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
JavaAPI连接Hbase遇到NoClassDefFoundError时的辛酸解决过程
JavaAPI连接Hbase遇到NoClassDefFoundError时的辛酸解决过程 使用Maven搭建JavaAPI连接Hbase项目,运行时出现了如下异常: java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/protobuf/generated/MasterProtos$MasterService$BlockingInt...
HBase2.x 使用 javaAPI进行操作
HBase2.x和1.x相比有一些改动,但是总体上差别不大,下面是自己写的简单的HBase操作,仅供参考。 /** * HBase工具类 * @author ll */ public class HBaseUtils { private static Configuration conf; private static Connection connection; ...
Hbase——javaAPI
上一篇文章主要讲解了Hbase的核心架构基础理论知识,本篇文章为Hbase的应用章节,主要讲解Hbase——JavaAPI的使用 DDL package com.tommy.test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client
2709



被折叠的 条评论
为什么被折叠?



