三、hbase JavaAPI
hbase是Java编写的,当然也提供了Java的API来操作hbase。
如果你是使用虚拟机来安装配置hbase那么你需要配置一下hostname,不然JavaAPI访问虚拟机的时候会无法连接,请参考:
https://www.cnblogs.com/lay2017/p/9953371.html
同时请注意关闭防火墙,如果你的虚拟机启动会默认开启防火墙的话,你需要关闭。
一、依赖
hbase客户端依赖如下:
<dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>1.2.0</version></dependency>
注意:hbase官方版本截止本文已经是2.1.1,但是这里使用1.2.0是由于官方文档并没有及时更新文档,所以对于client的使用你只能看到javadocs很不方便,亦或者你使用它文档的类的时候发现都是deprecated的线。
二、代码示例
以下的代码约200行,但内容并不复杂,仅有以下三块内容
1、在static块里面初始化了hbase的连接
2、main方法里面调用增删改查等JavaAPI接口,各个方法实现相应的内容
3、最后还有一个close方法
我们先看一下输出:
从输出内容我们看到,对表进行了删除、创建、列表查询,然后对表的单元格数据进行了新增、查询、遍历、删除
完整代码如下
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*;import java.io.IOException; import java.util.Arrays;/*** @Description java api* @Author lay* @Date 2018/11/12 13:10*/ public class HbaseJavaApiDemo {private static Configuration configuration;private static Connection connection;private static Admin admin;private static final String ENCODE = "UTF-8";static {// 创建configurationconfiguration = HBaseConfiguration.create();// 设置HBase的zk地址和端口configuration.set("hbase.zookeeper.quorum", "master");configuration.set("hbase.zookeeper.property.clientPort", "2181");try {connection = ConnectionFactory.createConnection(configuration);admin = connection.getAdmin();} catch (IOException e) {e.printStackTrace();}}public static void main(String[] args) throws Exception {try {String table = "t_user";String row = "row1";String columnFamily = "cf_name";String column = "firstName";String value = "lay";deleteTable(table);createOrOverrideTable(table, columnFamily);listTables();putData(table, row, columnFamily, column, value);getData(table, row, columnFamily, column);scanData(table);deleteData(table, row, columnFamily, column);} finally {close();}}/*** 创建表* @param table 表名* @param columnFamily 列簇* @throws IOException*/public static void createOrOverrideTable(String table, String columnFamily) throws IOException {TableName tableName = TableName.valueOf(table);HTableDescriptor tableDescriptor = new HTableDescriptor(tableName);// 添加一个列簇HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(columnFamily);tableDescriptor.addFamily(hColumnDescriptor);// 存在则删除 deleteTable(table);admin.createTable(tableDescriptor);System.out.println(table + " 表创建完成");}/*** 列出所有表* @throws IOException*/public static void listTables() throws IOException {HTableDescriptor[] hTableDescriptors = admin.listTables();System.out.println("列出所有的表:");for (HTableDescriptor t : hTableDescriptors) {System.out.println(t.getTableName());}}/*** 删除表* @param table 表名* @throws IOException*/public static void deleteTable(String table) throws IOException {TableName tableName = TableName.valueOf(table);if (admin.tableExists(tableName)) {admin.disableTable(tableName);admin.deleteTable(tableName);System.out.println(table + " 存在并执行删除");}}/*** 添加数据* @param table 表名* @param row 行* @param columnFamily 列簇* @param column 列* @param value 值* @throws IOException*/public static void putData(String table, String row, String columnFamily, String column, String value) throws IOException {TableName tableName = TableName.valueOf(table);Put put = new Put(row.getBytes(ENCODE));put.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE), value.getBytes(ENCODE));Table iTable = connection.getTable(tableName);iTable.put(put);iTable.close();System.out.println("数据添加完毕");}/*** 查询数据* @param table* @param row* @param columnFamily* @param column* @throws IOException*/public static void getData(String table, String row, String columnFamily, String column) throws IOException {TableName tableName = TableName.valueOf(table);Get get = new Get(row.getBytes(ENCODE));Table iTable = connection.getTable(tableName);Result result = iTable.get(get);byte[] data = result.getValue(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));System.out.println("查询的数据:" + new String(data));iTable.close();}/*** 删除数据* @param table* @param row* @param columnFamily* @param column* @throws IOException*/public static void deleteData(String table, String row, String columnFamily, String column) throws IOException {TableName tableName = TableName.valueOf(table);Delete delete = new Delete(row.getBytes(ENCODE));delete.addColumn(columnFamily.getBytes(ENCODE), column.getBytes(ENCODE));Table iTable = connection.getTable(tableName);iTable.delete(delete);iTable.close();System.out.println("数据删除完毕");}/*** 扫描数据* @param table* @throws IOException*/public static void scanData(String table) throws IOException {TableName tableName = TableName.valueOf(table);Scan scan = new Scan();Table iTable = connection.getTable(tableName);ResultScanner resultScanner = iTable.getScanner(scan);for (Result r : resultScanner) {Cell[] cells = r.rawCells();System.out.println("遍历的数据结果:");Arrays.stream(cells).forEach(cell -> {String value = new String(CellUtil.cloneValue(cell));System.out.println(value);});}iTable.close();}/*** 关闭admin和connection*/public static void close() {if (admin != null) {try {admin.close();} catch (IOException e) {throw new RuntimeException(e);}}if (connection != null) {try {connection.close();} catch (IOException e) {throw new RuntimeException(e);}}}}
转载于:https://www.cnblogs.com/lay2017/p/9953901.html
三、hbase JavaAPI相关推荐
- HBase 学习(三) JavaAPI的使用
一,前言 二,HBaseDDL 三,HBaseDML 正文 一,前言 一般情况下不会直接在Shell对Hbase进行操作,而是通过提高的API,我们先对Java的API进行介绍. 二,HBaseDDL ...
- Apache HBase JavaAPI 查询数据
文章目录 初始化一批数据到HBase当中用于查询 按照rowkey进行查询获取所有列的所有值 按照rowkey查询指定列族下面的指定列的值 通过startRowKey和endRowKey进行扫描 通过 ...
- Hbase JavaAPi介绍和使用示例(待更新)
Hbase客户端Api使用笔记 开发环境 系统 版本 下载地址 Idea 1.4 下载 hbase 1.1.0 下载 环境搭建 在这里我用的是Maven创建项目 初步预览 java类 HBase数据模 ...
- HBase:(三)HBase API
HBase:(一)安装部署_只爱大锅饭的博客-CSDN博客hbase部署安装https://blog.csdn.net/qq_35370485/article/details/130988364?sp ...
- hbase 单机 java api,HBase学习(一)hbase安装(单机模式)和javaapi客户端访问hbase例子...
平时习惯了window下开发,而Hbase只能在linux环境下运行,所以决定把hbase安装一台虚拟机上,在windows下运行eclipse连接虚拟机里的hbase 因为对linux命令了解不多, ...
- java api操作hbase_通过JavaAPI使用HBase
1.准备工作 (1) 启动zookeeper服务,我的是在本地启动zookeeper /usr/local/zookeeper/bin$ sudo zkServer.sh start (2) 启动HB ...
- Hbase从入门到入坑
本博客已迁移至微信公众号!将不再更新 关注公众号即可获得免费学习资源,获得免费指导!!! 公众号后续将会持续更新clickhouse,sparkstreaming,flink,数仓建模,用户画像,实时 ...
- HBase应该知道的
1 摘要 本文是一篇HBase学习综述,将会介绍HBase的特点.对比其他数据存储技术.架构.存储.数据结构.使用.过滤器等. 关于Phoenix on HBase,即Sql化的HBase服务,可以参 ...
- oracle+olh+hive,hadoop+hive+hbase的简单安装 | YallonKing
hadoop+hive+hbase的简单安装 hadoop.hive.hbase下载地址:http://mirror.bit.edu.cn/apache/ (一)hadoop安装: 解压hadoop- ...
最新文章
- 计算机网络实验五,计算机网络(实验五).docx
- FLUSH TABLES WITH READ LOCK 和 LOCK TABLES
- go 调用winapi_golang 调用windows API 中文的处理
- ubuntu重启+sublime快捷键
- js点击取消按钮关闭当前弹框_UI设计中“取消按钮”的分析详解
- 卷成这样,非逼我用RTX 3090?(深度学习GPU平台种草
- 开放世界下的混合域适应 ——面向真实自然场景下的全新迁移学习范式
- 程序—java记事本
- 菜鸟学习Spring——初识Spring
- Resharper F12下载dll源码
- Jquery+WeUI开发移动APP应用
- maya 2017 linux 下载,Maya插件下载 Maya神级特效优化插件Soup For Maya 2017-2019 Win/Mac/Linux安装版 下载-脚本之家...
- java特别描述错误的是,关于javac命令作用的描述错误的是
- 解决 winedit 打开tex文件 reading error(亲测可行)
- 关于神经网络算法使用场景的思考
- HTML5 canvas基础使用
- delete 和 delete[]的区别
- 如何给C盘增大空间,无损
- linux 环境命令行导出dmp文件
- a标签实现文件或者图片的下载