Hbase 2.2.2 简单API操作
前言
小案例中有创建表、创建命名空间、插入数据、获取数据。
环境准备
maven依赖可根据自己的版本进行调整
<!-- hbase依赖-->
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-common</artifactId>
<version>2.2.2</version>
</dependency>
小案例
代码:
package com.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 TestHbaseApi {
public static void main(String[] args) throws IOException {
Connection conn = getConn();
Admin admin = conn.getAdmin();
try {
NamespaceDescriptor aDefault = admin.getNamespaceDescriptor("default");
}catch (NamespaceNotFoundException e){
//没有命名空间,创建命名空间
admin.createNamespace(NamespaceDescriptor.create("default").build());
}
System.out.println("命名空间存在.");
//判断表是否存在
TableName tableName = TableName.valueOf("student");
boolean exists = admin.tableExists(tableName);
if (exists){
//获取表对象
Table table = conn.getTable(tableName);
//获取数据
Result result = table.get(new Get(Bytes.toBytes("1001")));
if (result.isEmpty()){
//如果没有数据则新增
Put put = new Put(Bytes.toBytes("1001"));
String family = "info";
String qualifier = "name";
String value = "zhangsan";
put.addColumn(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));
table.put(put);
System.out.println("数据新增");
}else {
//有数据就展示
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
System.out.println("family:" + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("qualifier:" + Bytes.toString(CellUtil.cloneQualifier(cell)));
System.out.println("row:" + Bytes.toString(CellUtil.cloneRow(cell)));
System.out.println("value:" + Bytes.toString(CellUtil.cloneValue(cell)));
}
}
}else {
//表不存在
//表描述建造者
TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(tableName);
//列族描述建造者
ColumnFamilyDescriptorBuilder cfdb = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("info"));
//设置最大版本号
cfdb.setMaxVersions(3);
//创建列族描述
ColumnFamilyDescriptor familyDescriptor = cfdb.build();
//将列族加入到表描述中
builder.setColumnFamily(familyDescriptor);
//创建表描述
TableDescriptor tableDescriptor = builder.build();
//创建表
admin.createTable(tableDescriptor);
System.out.println("表创建成功");
}
}
public static Connection getConn() throws IOException {
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum","hadoop100,hadoop101,hadoop102");
conf.set("hbase.zookeeper.property.clientPort", "2181");
Connection connection = ConnectionFactory.createConnection(conf);
return connection;
}
}
Hbase 2.2.2 简单API操作的更多相关文章
- Hbase Shell命令详解+API操作
HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...
- HBase 6、用Phoenix Java api操作HBase
开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...
- HBase API操作
|的ascII最大ctrl+shift+t查找类 ctrl+p显示提示 HBase API操作 依赖的jar包 <dependencies> <dependency> < ...
- Java代码通过API操作HBase的最佳实践
HBase提供了丰富的API.这使得用Java连接HBase非常方便. 有时候大家会使用HTable table=new HTable(config,tablename);的方式来实例化一个HTabl ...
- HDFS基本命令行操作及上传文件的简单API
一.HDFS基本命令行操作: 1.HDFS集群修改SecondaryNameNode位置到hd09-2 (1)修改hdfs-site.xml <configuration> //配置元数据 ...
- 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化
第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...
- 5.Hbase API 操作开发
Hbase API 操作开发需要连接Zookeeper进行节点的管理控制 1.配置 HBaseConfiguration: 包:org.apache.hadoop.hbase.HBaseConfigu ...
- Java API 操作HBase Shell
HBase Shell API 操作 创建工程 本实验的环境实在ubuntu18.04下完成,首先在改虚拟机中安装开发工具eclipse. 然后创建Java项目名字叫hbase-test 配置运行环境 ...
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
salesforce中对于数据库操作和JAVA等语言对于数据库操作是有一定区别的.salesforce中的数据库使用的是Force.com 平台的数据库,数据表一行数据可以理解成一个sObject变量 ...
随机推荐
- 记一次ns3的安装过程
官方安装教程:https://www.nsnam.org/wiki/Installation 推荐使用Ubuntu18.04,Ubuntu20.04有些依赖无法下载. 准备工作 # 如果下载速度很慢, ...
- kudu集群:kudu_master、kudu_tserver服务及数据的迁移(根据官网总结)
是不是都需要一个声明,来一个: 声明: 本文只是总结本人本地模拟环境测试,并没有经过严格的线上测试.请自己在本地严格测试之后慎重使用在生产环境! kudu_master.kudu_tserver服务迁 ...
- martini-拓扑映射
如何为一个新的分子创建拓扑文件? 这是martini应用的关键.http://jerkwin.github.io/2016/08/31/Martini%E5%B8%B8%E8%A7%81%E9%97% ...
- 都知道的copy_from_user
Q:一直知道内核和用户态的数据交互前都需要 校验地址的合法性,一般都用copy_from/to_user完成数据拷贝,那么为什么要这样呢?? A:看了一些blog以及Stack Overflow 主要 ...
- simple-rpc
RPC的实现原理 正如上一讲所说,RPC主要是为了解决的两个问题: 解决分布式系统中,服务之间的调用问题. 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑. 还是以计算器Calc ...
- 1-06-2 Lambda表达式
last modified:2020/10/31 1-06-3-Lambda表达式 6.3.1 为什么引入lambda表达式 lambda表达式是一个可传递的代码块,可以在以后执行一次或多次. 将一个 ...
- 关于android.view.InflateException【转载】
在AndroidStudio中编译没有问题,但是运行时会crash,常发生于自定义View的引用.出现问题的原因大致分为以下几种 1.引用View的路径问题:如果自定义的view为CustomerVi ...
- JLC PCB 嘉立创自动确认生产稿,不讲武德?耗子尾汁!!!
首先,开局一张图,嘉立创又不做人的一天.嘉立创不讲武德,耗子尾汁!!! 之前下单,勾选了确定生产稿和不加客编,结果生产稿出来还是给我加了客编.那我出10元的意思何在?让我自己花3元看我花的10元有没有 ...
- 常见MFC函数
1.MFC常用函数:WinExec()ExitWindowsEx()GlobalMemoryStatus()GetSystemInfo()GetSystemDirectory()GetWindowsD ...
- 使用Feign发送HTTP请求
使用Feign发送HTTP请求 在往常的 HTTP 调用中,一直都是使用的官方提供的 RestTemplate 来进行远程调用,该调用方式将组装代码冗余到正常业务代码中,不够优雅,因此在接触到 Fei ...