使用Java api对HBase 2.4.5进行增删改查
2021/9/13 22:08:33
本文主要是介绍使用Java api对HBase 2.4.5进行增删改查,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.运行hbase
2.新建maven项目
2.将hbase-site.xml放在项目的resources文件夹下
3.修改pom.xml文件,引入hbase相关资源
<repositories><!-- 代码库 --> <repository> <id>maven-ali</id> <url>http://maven.aliyun.com/nexus/content/groups/public//</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> </repository> </repositories> <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase</artifactId> <version>2.4.5</version> <type>pom</type> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.4.5</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-common --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-common</artifactId> <version>2.4.5</version> </dependency> <!-- jstl标签库--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.3.1</version> <scope>compile</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
4.运行java程序
package test; 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; import java.util.ArrayList; import java.util.List; public class HBaseDemo { private static Configuration conf = HBaseConfiguration.create(); private static Admin admin; static { conf.set("hbase.rootdir", "hdfs://node01:8020/hbase"); conf.set("hbase.zookeeper.quorum", "node01,node02,node03"); try { Connection connection = ConnectionFactory.createConnection(conf); admin = connection.getAdmin(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { HBaseDemo hBaseDemo = new HBaseDemo(); //hBaseDemo.createTable();//建表 //hBaseDemo.createTable2("test","f1","f2");//建表(制定行键) //hBaseDemo.addData();//插入数据 //hBaseDemo.insertBatchData("test");//插入多个数据 //hBaseDemo.getData();//通过Get查找单行数据,注意列值的类型 //hBaseDemo.scanAllData("test");//通过Scan方法扫描全表 //hBaseDemo.deleteData();//删除表数据 //hBaseDemo.deleteTable("test");//删除表 } public void createTable2(String tableName, String... columnFamily) { TableName tableNameObj = TableName.valueOf(tableName); try { if (admin.tableExists(tableNameObj)) { System.out.println("Table: " + tableName + " already exists!"); } else { HTableDescriptor tb = new HTableDescriptor(tableNameObj); for (int i = 0; i < columnFamily.length; i++) { HColumnDescriptor family = new HColumnDescriptor(columnFamily[i]); tb.addFamily(family); } admin.createTable(tb); System.out.println(tableName + "创建表成功"); } } catch (IOException e) { e.printStackTrace(); System.out.println(tableName + "创建表失败"); } } public void createTable(String tableName) throws IOException { //连接hbase集群 Configuration configuration = HBaseConfiguration.create(); //指定hbase的zk连接地址 configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取管理员对象 Admin admin = connection.getAdmin(); //通过管理员对象创建表 HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName)); //给表添加列族 HColumnDescriptor f1 = new HColumnDescriptor("f1"); HColumnDescriptor f2 = new HColumnDescriptor("f2"); //将两个列族设置到 创建的表中 hTableDescriptor.addFamily(f1); hTableDescriptor.addFamily(f2); //创建表 admin.createTable(hTableDescriptor); //关闭连接 admin.close(); connection.close(); System.out.println("创建表成功"); } public void addData(String tableName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取表对象 Table myuser = connection.getTable(TableName.valueOf(tableName)); Put put = new Put("0001".getBytes()); put.addColumn("f1".getBytes(),"id".getBytes(), Bytes.toBytes(1)); put.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("小李子")); put.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(18)); put.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("火星人")); put.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("13033607199")); put.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("啦啦啦啦")); myuser.put(put); //关闭表 myuser.close(); System.out.println("插入数据成功"); } public void insertBatchData(String tableName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum", "node01:2181,node02:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取表 Table myuser = connection.getTable(TableName.valueOf(tableName)); //创建put对象,并指定rowkey Put put = new Put("0002".getBytes()); put.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(1)); put.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("曹操")); put.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(30)); put.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("沛国谯县")); put.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("16888888888")); put.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("helloworld")); Put put2 = new Put("0003".getBytes()); put2.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(2)); put2.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("刘备")); put2.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(32)); put2.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put2.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("幽州涿郡涿县")); put2.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("17888888888")); put2.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("talk is cheap , show me the code")); Put put3 = new Put("0004".getBytes()); put3.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(3)); put3.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("孙权")); put3.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(35)); put3.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put3.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("下邳")); put3.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("12888888888")); put3.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("what are you 弄啥嘞!")); Put put4 = new Put("0005".getBytes()); put4.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(4)); put4.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("诸葛亮")); put4.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28)); put4.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put4.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("四川隆中")); put4.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("14888888888")); put4.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("出师表你背了嘛")); Put put5 = new Put("0006".getBytes()); put5.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5)); put5.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("司马懿")); put5.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(27)); put5.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put5.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("哪里人有待考究")); put5.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15888888888")); put5.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("跟诸葛亮死掐")); Put put6 = new Put("0007".getBytes()); put6.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5)); put6.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("xiaobubu—吕布")); put6.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28)); put6.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1")); put6.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("内蒙人")); put6.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15788888888")); put6.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("貂蝉去哪了")); List<Put> listPut = new ArrayList<Put>(); listPut.add(put); listPut.add(put2); listPut.add(put3); listPut.add(put4); listPut.add(put5); listPut.add(put6); myuser.put(listPut); myuser.close(); System.out.println("插入多个数据成功"); } public void getData(String tableName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取表对象 Table myuser = connection.getTable(TableName.valueOf(tableName)); Get get = new Get("0005".getBytes()); get.addColumn("f2".getBytes(),"address".getBytes());//列族;列名 //获取返回结果 Result result = myuser.get(get); List<Cell> cells = result.listCells(); for (Cell cell : cells) { //获取列族的名称 String familyName = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength()); //获取列的名称 String columnName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()); if ( familyName.equals("f1") && columnName.equals("id") || columnName.equals("age")){ int value = Bytes.toInt(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.println("列族名: " + familyName + " ,列名: " + columnName + " ,列值:" + value); } else { String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.println("列族名: " + familyName + " ,列名: " + columnName + " ,列值:" + value); } } //关闭表 myuser.close(); } public void scanAllData(String tableName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取表对象 Table myuser = connection.getTable(TableName.valueOf(tableName)); Scan scan = new Scan(); //设置起始和结束的rowkey,扫描结果是:[)类型 scan.setStartRow("0001".getBytes()); scan.setStopRow("0008".getBytes()); ResultScanner scanner = myuser.getScanner(scan); for (Result result : scanner) { List<Cell> cells = result.listCells(); for (Cell cell : cells) { String rowkey = Bytes.toString(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength()); //获取列族的名称 String familyName = Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength()); //获取列的名称 String columnName = Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()); if ( familyName.equals("f1") && columnName.equals("id") || columnName.equals("age")){ int value = Bytes.toInt(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.println("列族名: " + familyName + " ,列名: " + columnName + " ,列值:" + value); } else { String value = Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength()); System.out.println("列族名: " + familyName + " ,列名: " + columnName + " ,列值:" + value); } } } //获取返回结果 myuser.close(); } public void deleteData(String talbeName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取表对象 Table myuser = connection.getTable(TableName.valueOf(talbeName)); Delete delete = new Delete("0007".getBytes()); myuser.delete(delete); myuser.close(); System.out.println("删除成功"); } public void deleteTable(String tableName) throws IOException { //获取连接 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181"); Connection connection = ConnectionFactory.createConnection(configuration); //获取管理员对象 Admin admin = connection.getAdmin(); //禁用表 admin.disableTable(TableName.valueOf(tableName)); //删除表 admin.deleteTable(TableName.valueOf(tableName)); System.out.println("删除表成功"); } }
这篇关于使用Java api对HBase 2.4.5进行增删改查的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23线下车企门店如何实现线上线下融合?
- 2024-12-23鸿蒙Next ArkTS编程规范总结
- 2024-12-23物流团队冬至高效运转,哪款办公软件可助力风险评估?
- 2024-12-23优化库存,提升效率:医药企业如何借助看板软件实现仓库智能化
- 2024-12-23项目管理零负担!轻量化看板工具如何助力团队协作
- 2024-12-23电商活动复盘,为何是团队成长的核心环节?
- 2024-12-23鸿蒙Next ArkTS高性能编程实战
- 2024-12-23数据驱动:电商复盘从基础到进阶!
- 2024-12-23从数据到客户:跨境电商如何通过销售跟踪工具提升营销精准度?
- 2024-12-23汽车4S店运营效率提升的核心工具