Hbase 基本操作用 在java 上的实现
来源:互联网 发布:淘宝ip地址怎么查 编辑:程序博客网 时间:2024/06/03 22:25
点击有惊喜
1.首先确保hbase处于开启状态
2.创建maven 项目 导入依赖
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --><dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.2.0</version></dependency> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server --><dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>1.2.0</version></dependency>
3.在resources文件下添加两个文件
1.hbase-site.xml
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration> <property> <name>hbase.zookeeper.quorum</name> <value>master,slave1,slave2</value> <description>The directory shared by RegionServers.</description> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property></configuration>
2.log4j.properties
# Global logging configurationlog4j.rootLogger=INFO, stdout# MyBatis logging configuration...log4j.logger.org .mybatis.example.BlogMapper=TRACE# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
4.实现基本操作
package com.test.bd17;import java.io.IOException;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.NavigableMap;import java.util.Random;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellScanner;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.HColumnDescriptor;import org.apache.hadoop.hbase.HTableDescriptor;import org.apache.hadoop.hbase.TableName;import org.apache.hadoop.hbase.client.Admin;import org.apache.hadoop.hbase.client.Connection;import org.apache.hadoop.hbase.client.ConnectionFactory;import org.apache.hadoop.hbase.client.Get;import org.apache.hadoop.hbase.client.Put;import org.apache.hadoop.hbase.client.Result;import org.apache.hadoop.hbase.client.Table;import org.apache.hadoop.hbase.util.Bytes;public class HbaseTest { public Connection connection; //用hbaseconfiguration初始化配置信息时会自动加载当前应用classpath下的hbase-site.xml public static Configuration configuration = HBaseConfiguration.create(); public Table table; public Admin admin; public HbaseTest() throws Exception{ //对connection初始化 connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); } //创建表 public void createTable(String tablename,String... cf1) throws Exception{ //获取admin对象 Admin admin = connection.getAdmin(); //创建tablename对象描述表的名称信息 TableName tname = TableName.valueOf(tablename);//bd17:mytable //创建HTableDescriptor对象,描述表信息 HTableDescriptor tDescriptor = new HTableDescriptor(tname); //判断是否表已存在 if(admin.tableExists(tname)){ System.out.println("表"+tablename+"已存在"); return; } //添加表列簇信息 for(String cf:cf1){ HColumnDescriptor famliy = new HColumnDescriptor(cf); tDescriptor.addFamily(famliy); } //调用admin的createtable方法创建表 admin.createTable(tDescriptor); System.out.println("表"+tablename+"创建成功"); } //删除表 public void deleteTable(String tablename) throws Exception{ Admin admin = connection.getAdmin(); TableName tName = TableName.valueOf(tablename); if(admin.tableExists(tName)){ admin.disableTable(tName); admin.deleteTable(tName); System.out.println("删除表"+tablename+"成功!"); }else{ System.out.println("表"+tablename+"不存在。"); } } //新增数据到表里面Put public void putData() throws Exception{ TableName tableName = TableName.valueOf("bd17:fromjava"); Table table = connection.getTable(tableName); Random random = new Random(); List<Put> batPut = new ArrayList<Put>(); for(int i=0;i<10;i++){ //构建put的参数是rowkey rowkey_i (Bytes工具类,各种java基础数据类型和字节数组之间的相互转换) Put put = new Put(Bytes.toBytes("rowkey_"+i)); put.addColumn(Bytes.toBytes("i"), Bytes.toBytes("username"), Bytes.toBytes("un_"+i)); put.addColumn(Bytes.toBytes("i"), Bytes.toBytes("age"), Bytes.toBytes(random.nextInt(50)+1)); put.addColumn(Bytes.toBytes("i"), Bytes.toBytes("birthday"), Bytes.toBytes("20170"+i+"01")); put.addColumn(Bytes.toBytes("j"), Bytes.toBytes("phone"), Bytes.toBytes("电话_"+i)); put.addColumn(Bytes.toBytes("j"), Bytes.toBytes("email"), Bytes.toBytes("email_"+i)); //单记录put// table.put(put); batPut.add(put); } table.put(batPut); System.out.println("表插入数据成功!"); } public void getData() throws Exception{ TableName tableName = TableName.valueOf("bd17:fromjava"); table = connection.getTable(tableName); //构建get对象 List<Get> gets = new ArrayList<Get>(); for(int i=0;i<5;i++){ Get get = new Get(Bytes.toBytes("rowkey_"+i)); gets.add(get); } Result[] results = table.get(gets); for(Result result:results){ //一行一行读取数据// NavigableMap<byte[],NavigableMap<byte[],NavigableMap<Long,byte[]>>> maps = result.getMap();// for(byte[] cf:maps.keySet()){// NavigableMap<byte[],NavigableMap<Long,byte[]>> valueWithColumnQualify = maps.get(cf);// for(byte[] columnQualify:valueWithColumnQualify.keySet()){// NavigableMap<Long,byte[]> valueWithTimeStamp = valueWithColumnQualify.get(columnQualify);// for(Long ts:valueWithTimeStamp.keySet()){// byte[] value = valueWithTimeStamp.get(ts);// System.out.println("rowkey:"+Bytes.toString(result.getRow())+",columnFamliy:"+// Bytes.toString(cf)+",comlumnQualify:"+Bytes.toString(columnQualify)+",timestamp:"// +new Date(ts)+",value:"+Bytes.toString(value)// );// }// }// } //使用字段名称和列簇名称来获取value值// System.out.println("rowkey:"+Bytes.toString(result.getRow())+",columnfamily:i,columnqualify:username,value:"+// Bytes.toString(result.getValue(Bytes.toBytes("i"), Bytes.toBytes("username")))// );// System.out.println("rowkey:"+Bytes.toString(result.getRow())+",columnfamily:i,columnqualify:age,value:"+// Bytes.toInt(result.getValue(Bytes.toBytes("i"), Bytes.toBytes("age")))// ); //使用cell获取result里面的数据 CellScanner cellScanner = result.cellScanner(); while(cellScanner.advance()){ Cell cell = cellScanner.current(); //从单元格cell中把数据获取并输出 //使用 CellUtil工具类,从cell中把数据获取出来 String famliy = Bytes.toString(CellUtil.cloneFamily(cell)); String qualify = Bytes.toString(CellUtil.cloneQualifier(cell)); String rowkey = Bytes.toString(CellUtil.cloneRow(cell)); String value = Bytes.toString(CellUtil.cloneValue(cell)); System.out.println("rowkey:"+rowkey+",columnfamily:"+famliy+",qualify:"+qualify+",value:"+value); } } } //关闭连接 public void cleanUp() throws Exception{ connection.close(); } public static void main(String[] args) throws Exception { HbaseTest hbaseTest = new HbaseTest();// hbaseTest.createTable("bd17:fromjava", "i","j");// hbaseTest.deleteTable("bd17:fromjava");// hbaseTest.putData(); hbaseTest.getData(); hbaseTest.cleanUp(); }}
点击有惊喜
阅读全文
0 0
- Hbase 基本操作用 在java 上的实现
- 顺序表的基本操作用C 语言实现
- 顺序表的基本操作用c语言实现
- Hbase在HDFS上的各个目录作用
- pymongo基本操作用例
- 单链表的基本操作用c语言表示
- 【数据结构】单链表的倒序、删除相同结点、按值排序等简单操作用java实现
- 简单的五子棋操作用两种方法实现
- (10.15)静态实现顺序栈的基本操…
- HBase之Java API实操
- Zookeeper在hbase集群的作用
- Zookeeper在hbase集群的作用
- 链表的基本操
- 栈的基本操做
- 字符串的基本操做
- 2015年大二上-数据结构-图-1-(2)操作用邻接表存储的图
- HBase 数据文件在HDFS上的存储
- 建立在HBase上的分布式搜索
- IE8支持querySelector()和qu…
- F
- Java设计模式之策略模式
- Android与H5交互
- MySQL实时监控工具:doDBA
- Hbase 基本操作用 在java 上的实现
- Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:]解决办法
- 【complier】error: #268: declaration may not appear after executable statement in block
- 关于上网及proxy原理分析
- Android performance data collection
- SSM框架用JSON进行前后端数据传输
- Qt使用 消息队列框架 RabbitMQ
- Spring Boot整合MyBatis,附带单元测试
- linux 环境下GDB调试器基本用法