大数据学习之 HBase 的 JavaAPI 调用

准备:

代码实现:

  1. 创建资源连接对象和初始化连接信息
        static Configuration conf;
    	static Connection conn ;
    	static Admin admin;
    	static {
    		conf = HBaseConfiguration.create();
    		conf.set("hbase.zookeeper.quorum", "192.168.75.180");
    		try {
    			conn = ConnectionFactory.createConnection(conf);
    			admin = conn.getAdmin();
    		} catch (IOException e) {
    			System.err.println("获取hbase 连接失败");
    			e.printStackTrace();
    		}
    	}

     

  2. 创建Hbase表
    /**
    	 * 创建 Hbase 表
    	 * @param tableName
    	 * @throws IOException
    	 */
    	public static void createTable(TableName tableName) throws IOException{
    		if(!admin.tableExists(tableName)) {
    			//表构建
    			TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(tableName);
    
    			//列族构建 列族创建一般不会超过三个,详情可参考官网
    			ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder1 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("cf"));
    			ColumnFamilyDescriptor columnFamilyDescriptor1 = columnFamilyDescriptorBuilder1.build();
    			
    			ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder2 = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes("af"));
    			ColumnFamilyDescriptor columnFamilyDescriptor2 = columnFamilyDescriptorBuilder2.build();
    			
    			
    			//添加列族
    			tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor1);
    			tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptor2);
    			
    			TableDescriptor tableDescriptor = tableDescriptorBuilder.build();
    			
    			//创建表
    			admin.createTable(tableDescriptor);
    			
    		}

     

  3. 单条数据插入
    /**
    	 * 同一数据的插入
    	 * @param tableName
    	 * @throws IOException
    	 */
    	public static void insertTable(TableName tableName) throws IOException{
    		Table tb = conn.getTable(tableName);
    		
    		Put puts = new Put(Bytes.toBytes("20191003"));
    		
    		puts.addColumn(Bytes.toBytes("af"), Bytes.toBytes("a1"), Bytes.toBytes("Hello"));
    		puts.addColumn(Bytes.toBytes("af"), Bytes.toBytes("a2"), Bytes.toBytes("What"));
    		puts.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("a3"), Bytes.toBytes("Are"));
    		puts.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("a4"), Bytes.toBytes("Doing"));
    		
    		tb.put(puts);
            //批量插入 选用 tb.put(list<puts>);
    		tb.close();
    	}

     

  4. 数据查询(scan)
    /**
    	 * 全表扫描
    	 * @param tableName
    	 * @throws IOException
    	 */
    	public static void scanTable(TableName tableName) throws IOException{
    		Table tb = conn.getTable(tableName);
    		Scan scan = new Scan();
    		ResultScanner scanner = tb.getScanner(scan);
    		for (Result rs : scanner) {
    			String rowkey = Bytes.toString(rs.getRow());
    			System.out.println(rowkey);
    			Cell[] rawCells = rs.rawCells();
    			for(Cell cell : rawCells) {
    				System.out.println(
    						Bytes.toString(cell.getQualifierArray(),cell.getQualifierOffset(),cell.getQualifierLength())
    						+" : "
    						+Bytes.toString(cell.getValueArray(),cell.getValueOffset(),cell.getValueLength())
    						);
    			}
    		}
    		scanner.close();
    	}

     

  5. 表删除
    /**
    	 * 删除 Hbase 表
    	 * @param tableName
    	 * @throws IOException
    	 */
    	public static void dropTable(TableName tableName) throws IOException{
    		if(admin.tableExists(tableName)) {
    			admin.disableTable(tableName);
    			admin.deleteTable(tableName);
    		}else {
    			System.out.println(tableName+" is not exists");
    		}
    	}
    

     

  6. maven依赖
    <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client -->
    		<dependency>
    			<groupId>org.apache.hbase</groupId>
    			<artifactId>hbase-client</artifactId>
    			<version>2.2.1</version>
    		</dependency>
    		
    		<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase -->
    		<dependency>
    		    <groupId>org.apache.hbase</groupId>
    		    <artifactId>hbase</artifactId>
    		    <version>2.2.1</version>
    		    <type>pom</type>
    		</dependency>
    		
    		<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-common -->
    		<dependency>
    		    <groupId>org.apache.hbase</groupId>
    		    <artifactId>hbase-common</artifactId>
    		    <version>2.2.1</version>
    		</dependency>
    		
    		<!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-server -->
    		<dependency>
    		    <groupId>org.apache.hbase</groupId>
    		    <artifactId>hbase-server</artifactId>
    		    <version>2.2.1</version>
    		</dependency>

     

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值