大数据技术之_11_HBase学习_03_HBase 实战之谷粒微博(练习API) + 扩展知识(布隆过滤器+HBase2.0 新特性)

该篇博客介绍了如何使用HBase实现谷粒微博的需求,包括内容浏览、用户社交功能的数据库设计和代码实现。同时探讨了HBase在商业项目中的能力,如处理大量数据的读写操作。还深入讨论了布隆过滤器的概念,用于高效判断元素是否属于集合,以及HBase 2.0的新特性,包括region的冗余策略等。
摘要由CSDN通过智能技术生成

第8章 HBase 实战之谷粒微博

8.1 需求分析

  1) 微博内容的浏览,数据库表设计
  2) 用户社交体现:关注用户,取关用户
  3) 拉取关注的人的微博内容

数据库表设计:
[外链图片转存失败(img-F1wqIrTB-1562638565417)(https://s2.ax1x.com/2019/03/10/ApGbZT.png)]

8.2 代码实现

目录结构:
[外链图片转存失败(img-7ZHBe2UO-1562638565419)(https://s2.ax1x.com/2019/03/10/ApGqdU.png)]
代码如下:
常量类:

package com.atguigu.constant;

public class Constant {
   
	
	// 命名空间(相当于数据库名称)
	public static final String NAMESPACE = "weibo";
	
	// 内容表的表名
	public static final String CONTENT = "weibo:content";
	
	// 用户关系表的表名
	public static final String RELATIONS = "weibo:relations";
	
	// 微博收件箱表的表名
	public static final String INBOX = "weibo:inbox";
}

工具类:

package com.atguigu.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.Cell;
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.NamespaceDescriptor;
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.Delete;
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.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.filter.CompareFilter;
import org.apache.hadoop.hbase.filter.RowFilter;
import org.apache.hadoop.hbase.filter.SubstringComparator;
import org.apache.hadoop.hbase.util.Bytes;

import com.atguigu.constant.Constant;

public class WeiboUtil {
   
	
	// 获取配置conf
	private static Configuration conf = null;
	
	static {
   
    	// HBase配置文件
    	conf = HBaseConfiguration.create();
        
        // 设置zookeeper地址
        conf.set("hbase.zookeeper.quorum", "192.168.25.102");
        conf.set("hbase.zookeeper.property.clientPort", "2181");
	}

	// 创建命名空间
	public static void createNamespace(String namespace) throws IOException {
   
		
		// 创建连接
		// 注意:关于Util中的异常不要在工具类Util中catch,应该抛出去,因为工具类Util会在业务线上的很多地方调用,每一个业务线对待异常的处理方式不一样。
		Connection conn = ConnectionFactory.createConnection(conf);
		Admin admin = conn.getAdmin();
		
		// 创建命名空间描述器
		NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(namespace).build();

		// 创建命名空间
		admin.createNamespace(namespaceDescriptor);
		
		// 关闭资源
		admin.close();
	}
	
	// 创建表
	public static void createTable(String tableName, int versions, String... columnFamily) throws IOException {
   
		
		// 创建连接
		Connection conn = ConnectionFactory.createConnection(conf);
		Admin admin = conn
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值