HBase总结(十二)Java API 与HBase交互实例

<Zhuuu_ZZ>HBase(二)Java API---Java与Hbase的交互 使用Java API操作HBase一 创建Maven项目二 添加依赖三 使用Java API开发代码编写统一工具类编写建表代码编写插入数据四 打包、上传Jar包五 测试创表插入数据 一 创建Maven项目 这部分操作在我的以往博客多有提及,有需求请点击下方链接 链接: Maven安装及Maven工程的创建. 二 添加依赖 三 使用Java API开发代码 编写统一工具类 package cn.kgc.kb09.test.util; import org.apache.hadoop.conf.Confi 阅读详情
HBase提供了Java Api的访问接口,掌握这个就跟Java应用使用RDBMS时需要JDBC一样重要


[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. import java.io.IOException;  
  2.   
  3. import org.apache.hadoop.conf.Configuration;  
  4. import org.apache.hadoop.hbase.HBaseConfiguration;  
  5. import org.apache.hadoop.hbase.HColumnDescriptor;  
  6. import org.apache.hadoop.hbase.HTableDescriptor;  
  7. import org.apache.hadoop.hbase.KeyValue;  
  8. import org.apache.hadoop.hbase.client.Delete;  
  9. import org.apache.hadoop.hbase.client.Get;  
  10. import org.apache.hadoop.hbase.client.HBaseAdmin;  
  11. import org.apache.hadoop.hbase.client.HTable;  
  12. import org.apache.hadoop.hbase.client.HTablePool;  
  13. import org.apache.hadoop.hbase.client.Put;  
  14. import org.apache.hadoop.hbase.client.Result;  
  15. import org.apache.hadoop.hbase.client.ResultScanner;  
  16. import org.apache.hadoop.hbase.client.Scan;  
  17. import org.apache.hadoop.hbase.util.Bytes;  
  18.   
  19. public class Hbase {  
  20.     // 声明静态配置  
  21.     static Configuration conf = null;  
  22.     static {  
  23.         conf = HBaseConfiguration.create();  
  24.         conf.set("hbase.zookeeper.quorum", "localhost");  
  25.     }  
  26.   
  27.     /*  
  28.      * 创建表  
  29.      *   
  30.      * @tableName 表名  
  31.      *   
  32.      * @family 列族列表  
  33.      */  
  34.     public static void creatTable(String tableName, String[] family)  
  35.             throws Exception {  
  36.         HBaseAdmin admin = new HBaseAdmin(conf);  
  37.         HTableDescriptor desc = new HTableDescriptor(tableName);  
  38.         for (int i = 0; i < family.length; i++) {  
  39.             desc.addFamily(new HColumnDescriptor(family[i]));  
  40.         }  
  41.         if (admin.tableExists(tableName)) {  
  42.             System.out.println("table Exists!");  
  43.             System.exit(0);  
  44.         } else {  
  45.             admin.createTable(desc);  
  46.             System.out.println("create table Success!");  
  47.         }  
  48.     }  
  49.   
  50.     /*  
  51.      * 为表添加数据(适合知道有多少列族的固定表)  
  52.      *   
  53.      * @rowKey rowKey  
  54.      *   
  55.      * @tableName 表名  
  56.      *   
  57.      * @column1 第一个列族列表  
  58.      *   
  59.      * @value1 第一个列的值的列表  
  60.      *   
  61.      * @column2 第二个列族列表  
  62.      *   
  63.      * @value2 第二个列的值的列表  
  64.      */  
  65.     public static void addData(String rowKey, String tableName,  
  66.             String[] column1, String[] value1, String[] column2, String[] value2)  
  67.             throws IOException {  
  68.         Put put = new Put(Bytes.toBytes(rowKey));// 设置rowkey  
  69.         HTable table = new HTable(conf, Bytes.toBytes(tableName));// HTabel负责跟记录相关的操作如增删改查等//  
  70.                                                                     // 获取表  
  71.         HColumnDescriptor[] columnFamilies = table.getTableDescriptor() // 获取所有的列族  
  72.                 .getColumnFamilies();  
  73.   
  74.         for (int i = 0; i < columnFamilies.length; i++) {  
  75.             String familyName = columnFamilies[i].getNameAsString(); // 获取列族名  
  76.             if (familyName.equals("article")) { // article列族put数据  
  77.                 for (int j = 0; j < column1.length; j++) {  
  78.                     put.add(Bytes.toBytes(familyName),  
  79.                             Bytes.toBytes(column1[j]), Bytes.toBytes(value1[j]));  
  80.                 }  
  81.             }  
  82.             if (familyName.equals("author")) { // author列族put数据  
  83.                 for (int j = 0; j < column2.length; j++) {  
  84.                     put.add(Bytes.toBytes(familyName),  
  85.                             Bytes.toBytes(column2[j]), Bytes.toBytes(value2[j]));  
  86.                 }  
  87.             }  
  88.         }  
  89.         table.put(put);  
  90.         System.out.println("add data Success!");  
  91.     }  
  92.   
  93.     /*  
  94.      * 根据rwokey查询  
  95.      *   
  96.      * @rowKey rowKey  
  97.      *   
  98.      * @tableName 表名  
  99.      */  
  100.     public static Result getResult(String tableName, String rowKey)  
  101.             throws IOException {  
  102.         Get get = new Get(Bytes.toBytes(rowKey));  
  103.         HTable table = new HTable(conf, Bytes.toBytes(tableName));// 获取表  
  104.         Result result = table.get(get);  
  105.         for (KeyValue kv : result.list()) {  
  106.             System.out.println("family:" + Bytes.toString(kv.getFamily()));  
  107.             System.out  
  108.                     .println("qualifier:" + Bytes.toString(kv.getQualifier()));  
  109.             System.out.println("value:" + Bytes.toString(kv.getValue()));  
  110.             System.out.println("Timestamp:" + kv.getTimestamp());  
  111.             System.out.println("-------------------------------------------");  
  112.         }  
  113.         return result;  
  114.     }  
  115.   
  116.     /*  
  117.      * 遍历查询hbase表  
  118.      *   
  119.      * @tableName 表名  
  120.      */  
  121.     public static void getResultScann(String tableName) throws IOException {  
  122.         Scan scan = new Scan();  
  123.         ResultScanner rs = null;  
  124.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  125.         try {  
  126.             rs = table.getScanner(scan);  
  127.             for (Result r : rs) {  
  128.                 for (KeyValue kv : r.list()) {  
  129.                     System.out.println("row:" + Bytes.toString(kv.getRow()));  
  130.                     System.out.println("family:"  
  131.                             + Bytes.toString(kv.getFamily()));  
  132.                     System.out.println("qualifier:"  
  133.                             + Bytes.toString(kv.getQualifier()));  
  134.                     System.out  
  135.                             .println("value:" + Bytes.toString(kv.getValue()));  
  136.                     System.out.println("timestamp:" + kv.getTimestamp());  
  137.                     System.out  
  138.                             .println("-------------------------------------------");  
  139.                 }  
  140.             }  
  141.         } finally {  
  142.             rs.close();  
  143.         }  
  144.     }  
  145.   
  146.     /*  
  147.      * 遍历查询hbase表  
  148.      *   
  149.      * @tableName 表名  
  150.      */  
  151.     public static void getResultScann(String tableName, String start_rowkey,  
  152.             String stop_rowkey) throws IOException {  
  153.         Scan scan = new Scan();  
  154.         scan.setStartRow(Bytes.toBytes(start_rowkey));  
  155.         scan.setStopRow(Bytes.toBytes(stop_rowkey));  
  156.         ResultScanner rs = null;  
  157.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  158.         try {  
  159.             rs = table.getScanner(scan);  
  160.             for (Result r : rs) {  
  161.                 for (KeyValue kv : r.list()) {  
  162.                     System.out.println("row:" + Bytes.toString(kv.getRow()));  
  163.                     System.out.println("family:"  
  164.                             + Bytes.toString(kv.getFamily()));  
  165.                     System.out.println("qualifier:"  
  166.                             + Bytes.toString(kv.getQualifier()));  
  167.                     System.out  
  168.                             .println("value:" + Bytes.toString(kv.getValue()));  
  169.                     System.out.println("timestamp:" + kv.getTimestamp());  
  170.                     System.out  
  171.                             .println("-------------------------------------------");  
  172.                 }  
  173.             }  
  174.         } finally {  
  175.             rs.close();  
  176.         }  
  177.     }  
  178.   
  179.     /*  
  180.      * 查询表中的某一列  
  181.      *   
  182.      * @tableName 表名  
  183.      *   
  184.      * @rowKey rowKey  
  185.      */  
  186.     public static void getResultByColumn(String tableName, String rowKey,  
  187.             String familyName, String columnName) throws IOException {  
  188.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  189.         Get get = new Get(Bytes.toBytes(rowKey));  
  190.         get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName)); // 获取指定列族和列修饰符对应的列  
  191.         Result result = table.get(get);  
  192.         for (KeyValue kv : result.list()) {  
  193.             System.out.println("family:" + Bytes.toString(kv.getFamily()));  
  194.             System.out  
  195.                     .println("qualifier:" + Bytes.toString(kv.getQualifier()));  
  196.             System.out.println("value:" + Bytes.toString(kv.getValue()));  
  197.             System.out.println("Timestamp:" + kv.getTimestamp());  
  198.             System.out.println("-------------------------------------------");  
  199.         }  
  200.     }  
  201.   
  202.     /*  
  203.      * 更新表中的某一列  
  204.      *   
  205.      * @tableName 表名  
  206.      *   
  207.      * @rowKey rowKey  
  208.      *   
  209.      * @familyName 列族名  
  210.      *   
  211.      * @columnName 列名  
  212.      *   
  213.      * @value 更新后的值  
  214.      */  
  215.     public static void updateTable(String tableName, String rowKey,  
  216.             String familyName, String columnName, String value)  
  217.             throws IOException {  
  218.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  219.         Put put = new Put(Bytes.toBytes(rowKey));  
  220.         put.add(Bytes.toBytes(familyName), Bytes.toBytes(columnName),  
  221.                 Bytes.toBytes(value));  
  222.         table.put(put);  
  223.         System.out.println("update table Success!");  
  224.     }  
  225.   
  226.     /*  
  227.      * 查询某列数据的多个版本  
  228.      *   
  229.      * @tableName 表名  
  230.      *   
  231.      * @rowKey rowKey  
  232.      *   
  233.      * @familyName 列族名  
  234.      *   
  235.      * @columnName 列名  
  236.      */  
  237.     public static void getResultByVersion(String tableName, String rowKey,  
  238.             String familyName, String columnName) throws IOException {  
  239.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  240.         Get get = new Get(Bytes.toBytes(rowKey));  
  241.         get.addColumn(Bytes.toBytes(familyName), Bytes.toBytes(columnName));  
  242.         get.setMaxVersions(5);  
  243.         Result result = table.get(get);  
  244.         for (KeyValue kv : result.list()) {  
  245.             System.out.println("family:" + Bytes.toString(kv.getFamily()));  
  246.             System.out  
  247.                     .println("qualifier:" + Bytes.toString(kv.getQualifier()));  
  248.             System.out.println("value:" + Bytes.toString(kv.getValue()));  
  249.             System.out.println("Timestamp:" + kv.getTimestamp());  
  250.             System.out.println("-------------------------------------------");  
  251.         }  
  252.         /*  
  253.          * List<?> results = table.get(get).list(); Iterator<?> it =  
  254.          * results.iterator(); while (it.hasNext()) {  
  255.          * System.out.println(it.next().toString()); }  
  256.          */  
  257.     }  
  258.   
  259.     /*  
  260.      * 删除指定的列  
  261.      *   
  262.      * @tableName 表名  
  263.      *   
  264.      * @rowKey rowKey  
  265.      *   
  266.      * @familyName 列族名  
  267.      *   
  268.      * @columnName 列名  
  269.      */  
  270.     public static void deleteColumn(String tableName, String rowKey,  
  271.             String falilyName, String columnName) throws IOException {  
  272.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  273.         Delete deleteColumn = new Delete(Bytes.toBytes(rowKey));  
  274.         deleteColumn.deleteColumns(Bytes.toBytes(falilyName),  
  275.                 Bytes.toBytes(columnName));  
  276.         table.delete(deleteColumn);  
  277.         System.out.println(falilyName + ":" + columnName + "is deleted!");  
  278.     }  
  279.   
  280.     /*  
  281.      * 删除指定的列  
  282.      *   
  283.      * @tableName 表名  
  284.      *   
  285.      * @rowKey rowKey  
  286.      */  
  287.     public static void deleteAllColumn(String tableName, String rowKey)  
  288.             throws IOException {  
  289.         HTable table = new HTable(conf, Bytes.toBytes(tableName));  
  290.         Delete deleteAll = new Delete(Bytes.toBytes(rowKey));  
  291.         table.delete(deleteAll);  
  292.         System.out.println("all columns are deleted!");  
  293.     }  
  294.   
  295.     /*  
  296.      * 删除表  
  297.      *   
  298.      * @tableName 表名  
  299.      */  
  300.     public static void deleteTable(String tableName) throws IOException {  
  301.         HBaseAdmin admin = new HBaseAdmin(conf);  
  302.         admin.disableTable(tableName);  
  303.         admin.deleteTable(tableName);  
  304.         System.out.println(tableName + "is deleted!");  
  305.     }  
  306.   
  307.     public static void main(String[] args) throws Exception {  
  308.   
  309.         // 创建表  
  310.         String tableName = "blog2";  
  311.         String[] family = { "article", "author" };  
  312.         // creatTable(tableName, family);  
  313.   
  314.         // 为表添加数据  
  315.   
  316.         String[] column1 = { "title", "content", "tag" };  
  317.         String[] value1 = {  
  318.                 "Head First HBase",  
  319.                 "HBase is the Hadoop database. Use it when you need random, realtime read/write access to your Big Data.",  
  320.                 "Hadoop,HBase,NoSQL" };  
  321.         String[] column2 = { "name", "nickname" };  
  322.         String[] value2 = { "nicholas", "lee" };  
  323.         addData("rowkey1", "blog2", column1, value1, column2, value2);  
  324.         addData("rowkey2", "blog2", column1, value1, column2, value2);  
  325.         addData("rowkey3", "blog2", column1, value1, column2, value2);  
  326.   
  327.         // 遍历查询  
  328.         getResultScann("blog2", "rowkey4", "rowkey5");  
  329.         // 根据row key范围遍历查询  
  330.         getResultScann("blog2", "rowkey4", "rowkey5");  
  331.   
  332.         // 查询  
  333.         getResult("blog2", "rowkey1");  
  334.   
  335.         // 查询某一列的值  
  336.         getResultByColumn("blog2", "rowkey1", "author", "name");  
  337.   
  338.         // 更新列  
  339.         updateTable("blog2", "rowkey1", "author", "name", "bin");  
  340.   
  341.         // 查询某一列的值  
  342.         getResultByColumn("blog2", "rowkey1", "author", "name");  
  343.   
  344.         // 查询某列的多版本  
  345.         getResultByVersion("blog2", "rowkey1", "author", "name");  
  346.   
  347.         // 删除一列  
  348.         deleteColumn("blog2", "rowkey1", "author", "nickname");  
  349.   
  350.         // 删除所有列  
  351.         deleteAllColumn("blog2", "rowkey1");  
  352.   
  353.         // 删除表  
  354.         deleteTable("blog2");  
  355.   
  356.     }  
  357. }  


顶
PYNQ-Z2 开发板从镜像烧录到 Jupyter 交互全流程指南 本文详细介绍了PYNQ-Z2开发板从镜像烧录到Jupyter交互的全流程指南,包括硬件解析、镜像烧录技巧、设备启动与网络配置、Jupyter Notebook深度使用以及实战案例分享。通过具体步骤和实用技巧,帮助开发者快速上手PYNQ-Z2开发板,实现高效的FPGA开发和智能家居控制应用。 阅读详情

相关推荐

使用cubeMX生成USB HID设备

本文主要介绍如何使用stm32开发板和cubeMX生成HID设备,供参考。

专注音频,高效工作,快乐生活! 971

HBase入门系列(5)- HBase之JavaAPI操作详解

前言 HBase 除了支持使用 Shell 客户端来操作,还提供了多种编程语言的接口,其中 Java API 是原生支持的,其它编程语言接口需要通过 Thrift 协议支持。 HBase 官方代码包里含有原生访问客户端,由 Java 语言实现,相关的类在 org.apache.hadoop.hbase.client 包中,都是与 HBase 数据存储管理相关的 API。 例如,若要管理 HBase,则用 Admin 接口来创建、删除、更改表;若要向表格添加数据或查询数据,则使用 Table 接口等。 环境配

记录知识、锤炼自我 1364

QT快速配置MSVC2017编译环境(3分钟极简指南)

本文提供了一份3分钟极简指南,帮助开发者快速配置QT的MSVC2017编译环境。通过断网安装、精准勾选组件和配置QT Creator编译器路径等步骤,大幅提升QT开发效率。MSVC2017作为Windows平台高性能C++编译器,特别适合处理大型QT项目,编译速度优势明显。

weixin_30399821的博客 504

Hbase(六) hbase Java API

一、 几个主要 Hbase API 类和数据模型之间的对应关系: 1、 HBaseAdmin关系: org.apache.hadoop.hbase.client.HBaseAdmin作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表,删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。 2、 HBaseConfiguration关系: org...

weixin_30628801的博客 521

u3d逆向学习之纯C内存读写与ImGui绘制(Android)

方法:需要在/proc/pid/maps文件查找模块名,一行行遍历所有内存,第一个参数为模块名,第二个参数为索引index(因为该模块会有多个,index为正序遍历第index个该模块),若找到了则使用。32位游戏的指针大小采用4字节,而64位游戏的指针大小采用8字节(这里需要注意),数据地址以16进制存储,使用unsigned long类型 ,该函数只有一个参数,数据地址,返回该地址的指针跳转地址。文件,比较其中的内容是否与传入的包名相同,如果相同,则返回该进程的PID。

zhoujunjie2004的博客 1687

obisidian插件之【templater】模板的中文说明书

Templater 是一种模板语言,可让您将变量和函数结果插入到笔记中。它还允许您执行操作这些变量和函数的 JavaScript 代码。使用 Templater,您将能够创建强大的模板来自动执行手动任务。

m0_55795604的博客 1万+

Java 操作HBase

1.创建一个学生信息表,用来存储学生的姓名(姓名作为行键,且假设姓名不会重复)以及考试成绩,其中考试成绩(score)是一个列族,存储了各个科目的考试成绩。HTableDescriptor包含了HBase中的表格的详细信息(例如表中的列族、表的类型、表是否只读、MemoStore的最大空间、Region分裂时机等)管理HBase数据库信息(包括创建、删除表、列出表项、使表有效/无效、添加/删除表的列族成员、检查HBase运行状态等)2.针对表的操作(创建表、删除表、判断表是否存在、使用/禁用表、列出表)

qq_42260493的博客 8482

【C++】开源:ncurses终端TUI文本界面库

ncurses配置使用(TUI)

DevFrank的博客 3172

Hbase Java API的简单使用+原理介绍

本文主要通过Hbase JavaAPI在Hbase中进行建表及插入数据及HBase的DDL和DML,让你更加了解关于Hbase的相关原理。

勇敢牛牛,不怕困难! 1450

【人工智能】在 cc-switch 中配置 AnyRouter 接入 Claude Code 完整指南

本文介绍了在cc-switch工具中配置AnyRouter中转服务以接入Claude Code的详细步骤。主要内容包括:1) 准备API令牌和端点地址;2) 填写基础信息和模型参数;3) 保存配置并重启终端生效;4) 常见问题排查方法。重点强调了API地址格式、模型ID准确性以及配置写入的必要性,帮助用户顺利完成中转服务配置,实现Claude 4.5版本的正常使用。

奶爸的编程之路,也就一周冷个三天 3106

结构力学本构模型:复合材料模型:复合材料热力学行为技术教程_2024-08-07_06-54-53.Tex

热塑性复合材料是一种由热塑性树脂基体和增强纤维组成的复合材料。与热固性复合材料不同,热塑性复合材料在加热时可以软化,冷却时硬化,这一过程可以重复进行,因此它们具有可回收和可再加工的特性。热塑性树脂,如聚酰胺(尼龙)、聚碳酸酯、聚醚醚酮(PEEK)等,与碳纤维、玻璃纤维等增强材料结合,可以制备出具有高强度、高刚度和良好耐热性的复合材料。热粘弹性理论是研究材料在温度变化和时间依赖性载荷作用下的变形和应力响应。复合材料,由于其独特的微观结构,展现出复杂的热粘弹性行为。

809

Hbase API以及java如何操作Hbase的说明

1.文章目的 本文主要包括两个方面的内容,一是Hbase Java API简介;二是一个完整的Java项目访问Hbase的步骤及示例代码。 本文档假设读者已在VMware上安装centOS虚拟机,并且已成功安装配置好Hadoop伪集群和Hbase数据库 2.Hbase的javaAPI简介 2.1几个相关类与HBase数据模型之间的对应关系 3.重点类介绍 3.1.HBaseConfigurati...

zhangbinch的博客 1289

最新Codex接入DeepSeek官方API教程(无需cc-switch)

最新Codex接入DeepSeek官方API教程(无需cc-switch)

猿小白的博客 964

Java API 与HBase交互实例

HBase提供了Java API,可以通过API来实现对HBase的一些操作。 package hbase; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apa

Oner.wv的专栏 1204

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hbase Java API操作

Hbase Java API操作,对于创建项目和操作表,表数据的方法

m0_72168501的博客 3227

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【hdfs】【hbase】【大数据技术基础】实践二 HBase Java API编程

为什么可以写命令还要编写程序?自动化批量处理?尽管我们可以通过HBase的shell命令行工具进行数据操作,但在实际的生产环境中,为了提高效率和实现自动化处理,我们通常需要编写程序来与HBase进行交互。本实例使用Eclipse编写java程序,来对HBase数据库进行增删改查等操作,Eclipse可以在Ubuntu软件中心搜索下载并安装。第一步:启动hadoop,启动hbase在开始之前,确保你已经安装了Hadoop和HBase,并且它们正在运行。

Kika写代码的博客 2136

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: HBase Java API使用操作例子
下一篇: HBase总结(十三)HBase Shell 常用命令及例子
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值