HBase微博实战案例

HBase微博实战案例

1 需求分析

  1. 微博内容的浏览,数据库表设计

  2. 用户社交体现:关注用户,取关用户

  3. 拉取关注的人的微博内容
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2 代码实现

2.1 准备工作

  • 第一步:创建maven工程并导入jar包

    直接使用在版本确界当中创建的工程以及导入的jar包即可

  • 第二步:拷贝三个配置文件到maven工程的下

    将node01服务器的三个配置文件,分别是

    core-site.xml、hdfs-site.xml、hbase-site.xml三个配置文件,拷贝到maven工程的resources资源目录下

2.2 代码设计总览:

  1. 创建命名空间以及表名的定义

  2. 创建微博内容表

  3. 创建用户关系表

  4. 创建用户微博内容接收邮件表

  5. 发布微博内容

  6. 添加关注用户

  7. 移除(取关)用户

  8. 获取关注的人的微博内容

2.3 创建命名空间以及表名的定义

代码实现:

    //微博内容表
    private static final byte[] WEIBO_CONTENT = "weibo:content".getBytes();
    //用户关系表
    private static final byte[] WEIBO_RELATION = "weibo:relation".getBytes();
    //收件箱表
    private static final byte[] WEIBO_CRCEIVE_CONTENT_EMAIL = "weibo:receive_content_email".getBytes();
    //建命名空间
    public void createNameSpace() throws IOException {
   
        //获得连接
        Connection connection = getConnection();

        //生成Admin对象
        Admin admin = connection.getAdmin();

        //admin创建namespace
        NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create("weibo").addConfiguration("creator", "bruce").build();
        admin.createNamespace(namespaceDescriptor);

        //关闭连接
        admin.close();
        connection.close();
    }

    public Connection getConnection() throws IOException {
   
        Configuration configuration = HBaseConfiguration.create();
        configuration.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181");

        Connection connection = ConnectionFactory.createConnection(configuration);
        return connection;
    }

2.4 创建微博内容表

表结构:

方法名 creatTableeContent
Table Name weibo:content
RowKey 用户ID_时间戳
ColumnFamily info
ColumnLabel 标题,内容,图片
Version 1个版本

代码实现:

    public void createTableContent() throws IOException {
   
        //获得连接
        Connection connection = getConnection();

        //admin
        Admin admin = connection.getAdmin();

        //创建
        if(!admin.tableExists(TableName.valueOf(WEIBO_CONTENT))) {
   
            HTableDescriptor weibo_content = new HTableDescriptor(TableName.valueOf(WEIBO_CONTENT));

            HColumnDescriptor info = new HColumnDescriptor("info");
            //指定最小版本、最大版本
            info.setMinVersions(1);
            info.setMaxVersions(1);
            info.setBlockCacheEnabled(true);

            weibo_content.addFamily(info);

            admin.createTable(weibo_content);
        }

        //关闭连接
        admin.close();
        connection.close();
    }

2.5 创建用户关系表

表结构:

方法名 createTableRelations
Table Name weibo:relations
RowKey 用户ID
ColumnFamily attends、fans
ColumnLabel 关注用户ID,粉丝用户ID
ColumnValue 用户ID
Version 1个版本

代码实现:

    /**
     * 创建用户关系表
     *  * 方法名 createTableRelations
     *  Table Name    weibo:relations
     *  RowKey    用户ID
     *  ColumnFamily  attends、fans
     *  ColumnLabel   关注用户ID,粉丝用户ID
     *  ColumnValue   用户ID
     *  Version   1个版本
     */
    public void createTableRelation() throws IOException {
   
        Connection connection = getConnection();
        Admin admin = connection.getAdmin();

        if(
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值