HBase API操作
|的ascII最大
ctrl+shift+t查找类 ctrl+p显示提示
HBase API操作
依赖的jar包
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>1.3.</version>
</dependency> <dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.3.</version>
</dependency> </dependencies>
public class TestHbase {
//1.构建Configuration, Connection, Admin
//Configuration 持有了zk的信息,进而hbase集群的信息可以间接获得
public static Configuration conf;
//Connection hbase连接 借助配置信息 获得连接
public static Connection connection;
public static Admin admin;
static{ //为静态属性初始化,或者说辅助类初始化
conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "hadoop101,hadoop102,hadoop103");
try {
connection = ConnectionFactory.createConnection(conf);
} catch (IOException e) {
e.printStackTrace();
}
//admin
try {
admin = connection.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
}
//1.创建库
public static void createNS(String namespace) throws IOException {
//①构建 ns的描述器 声明库名
NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(namespace).build();
//②创建库
try{
admin.createNamespace(namespaceDescriptor);
}catch (NamespaceExistException e){
System.out.println("该库已经存在!");
}
//③关资源
admin.close();
}
//2.判断表是否存在
public static boolean isExists(String tableName) throws IOException {
boolean exists = admin.tableExists(TableName.valueOf(tableName));
System.out.println("exits:" + exists);
admin.close();
return exists;
}
//3.创建表
public static void createTable(String tableName, String... info) throws IOException {
//①HTableDescriptor
HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName));
//②添加columnFamily 列族
for (String cf : info) {
hTableDescriptor.addFamily(new HColumnDescriptor(cf));
}
//③建表
admin.createTable(hTableDescriptor);
//④释放资源
admin.close();
}
public static void deleteTable(String tableName) throws IOException {
//禁用并删除表
admin.disableTable(TableName.valueOf(tableName));
admin.deleteTable(TableName.valueOf(tableName));
admin.close();
}
//5.插入数据 put 'student','1001','cf1:name','kris'
public static void insertData(String tableName, String rowkey, String column, String value) throws IOException {
//①获取table
Table table = connection.getTable(TableName.valueOf(tableName));
//②获得put
Put put = new Put(Bytes.toBytes(rowkey));//把String类型转成bytes类型
put.addColumn(Bytes.toBytes(column.split(":")[0]), Bytes.toBytes(column.split(":")[1]),
Bytes.toBytes(value));
table.put(put); //③添加数据
table.close();//④释放资源
}
//6.删除数据
public static void deleteData(String tableName, String... rowkey) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
for (String rk : rowkey) {
Delete del = new Delete(Bytes.toBytes(rk));//获得delete对象,其中持有要删除行的rowkey
table.delete(del);
}
table.close();
}
//7.查询
public static void queryAll(String tableName) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
ResultScanner results = table.getScanner(scan);
for (Result result : results) { //result对应一行数据
Cell[] cells = result.rawCells(); //获取一行的所有cells
for (Cell cell : cells) {
String rowkey = Bytes.toString(CellUtil.cloneRow(cell));//
String family = Bytes.toString(CellUtil.cloneFamily(cell));
String column = Bytes.toString(CellUtil.cloneQualifier(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
System.out.println("rowkey:" + rowkey + "\t" + family + ":" + column
+"\t" + value);
}
}
}
//8.查询单行
public static void getRow(String tableName, String rowkey) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName));
Get get = new Get(Bytes.toBytes(rowkey));
get.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("name"));
//get.addFamily(Bytes.toBytes("cf1")); //如果不追加列族,则查询所有列族
Result result = table.get(get);
Cell[] cells = result.rawCells();
for (Cell cell : cells) {
System.out.println("查询单行");
String row = Bytes.toString(CellUtil.cloneRow(cell));
String family = Bytes.toString(CellUtil.cloneFamily(cell));
String column = Bytes.toString(CellUtil.cloneQualifier(cell));
String value = Bytes.toString(CellUtil.cloneValue(cell));
System.out.println("row:" + row +"\t" + family + ":" + column + "\t" + value);
}
}
HBase API操作的更多相关文章
- 5.Hbase API 操作开发
Hbase API 操作开发需要连接Zookeeper进行节点的管理控制 1.配置 HBaseConfiguration: 包:org.apache.hadoop.hbase.HBaseConfigu ...
- HBASE API操作问题总结
org.apache.hadoop.hbase.MasterNotRunningException 在centos中查看,发现没有HMaster进程 解决方法: 1.启动hadoop后,需要等一段时间 ...
- Hbase——API操作
1.判断表是否存在 public static boolean isTableExit(String tableName) throws IOException { // //获取配置文件信息 // ...
- Hbase Shell命令详解+API操作
HBase Shell 操作 3.1 基本操作1.进入 HBase 客户端命令行,在hbase-2.1.3目录下 bin/hbase shell 2.查看帮助命令 hbase(main):001:0& ...
- 大数据技术之_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 对象的方法以及关 ...
- 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 基础操作
对于数据操作,HBase支持四类主要的数据操作,分别是: Put :增加一行,修改一行 Delete :删除一行,删除指定列族,删除指定column的多个版本,删除指定column的制定版本等 Get ...
- 使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法:
使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法: 1.错误详情: Excepti ...
- Java API 操作HBase Shell
HBase Shell API 操作 创建工程 本实验的环境实在ubuntu18.04下完成,首先在改虚拟机中安装开发工具eclipse. 然后创建Java项目名字叫hbase-test 配置运行环境 ...
随机推荐
- java学习——异常处理
类 Throwable类 Java 语言中所有错误或异常的超类.只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw语句抛出.类似地,只有此类 ...
- kotlin学习笔记-异常好玩的list集合总结
不积跬步无以至千里,不积小流无以成江海 先看看Kotlin中for循环的遍历 fun testList(){ var StringVal = "12_12_13_15_a_b_c_d_yu_ ...
- sleep()和wait()的区别及wait方法的一点注意事项
一.查看API sleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时间会自动恢复,调用sleep方法不会释放锁对象. 当调用sleep方 ...
- Modbus库开发笔记之五:Modbus RTU Slave开发
Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave.对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的.其操作过程也是一样的. ...
- mongoDB基础使用
环境交代 操作系统: CentOS 6.8 64位 mongodb: 4.06 安装 官方下载地址:https://www.mongodb.org/dl/linux/x86_64-rhel62 阿里云 ...
- Java编制至今总结和学习报告
日期:2018.8.19 星期日 博客期:006 说个事,本来想把博客园做一个交流平台的,可是交流度有点少...嗯...我看我还是把这个平台当作经验传授平台和自己的作品发布平台吧!Java的知识详解, ...
- ActiveMQ消息的持久化策略
持久化消息和非持久化消息的存储原理: 正常情况下,非持久化消息是存储在内存中的,持久化消息是存储在文件中的.能够存储的最大消息数据在${ActiveMQ_HOME}/conf/activemq.xml ...
- PDF文件编辑技巧之PDF书签怎么设置
纸质的文件想要添加书签就直接拿笔书写就可以,Word文件怎么添加书签相信大家也都知道,那么PDF文件的书签要怎么设置的呢,是不是有很多小伙伴不知道该怎么做呢,不要担心,今天小编就来跟大家分享一下在PD ...
- CF 1051F
题意:给定一张n个点,m条边的无向联通图,其中m-n<=20,共q次询问,每次询问求给定两点u,v间的最短路长度 第一眼看见这题的时候,以为有什么神奇的全图最短路算法,满心欢喜的去翻了题解,发现 ...
- 在vue项目中使用axios发送FormData
这个是axios的中文文档,挺详细的: https://www.kancloud.cn/luponu/axios/873153 文档中的 使用 application/x-www-form-ur ...