package tyh.test;
import tyh.constants.constants;
import tyh.dao.HbaseDao;
import tyh.utils.HBaseUtil;
import java.io.IOException;
public class Test {
public static void init() {
//1、创建命名空间
HBaseUtil.CreateNameSpace(constants.NAMESPACE);
try {
//2、创建微博内容表
HBaseUtil.CreateTable(constants.CONTENT_TABLE, constants.CONTENT_TABLE_VERSIONS, constants.CONTENT_TABLE_CF);
//3、创建用户关系表
HBaseUtil.CreateTable(constants.RELATION_TABLE,
constants.RELATION_TABLE_VERSIONS,
constants.RELATION_TABLE_ATTEND,
constants.RELATION_TABLE_FANS);
//4、创建收件箱表
HBaseUtil.CreateTable(constants.INBOX_TABLE, constants.INBOX_TABLE_VERSIONS, constants.INBOX_TABLE_CONCERN);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException, InterruptedException {
//初始化
init();
//1001发布微博
HbaseDao.publishWeiBo("1001", "赶紧下课吧!!!");
//1002关注1001和1003
HbaseDao.addAttends("1002", "1001", "1003");
//获取1002初始化界面
HbaseDao.getInit("1002");
System.out.println("***************111***************");
//1003发布3条微博,同时1001发布两条
HbaseDao.publishWeiBo("1003", "谁说的感紧下课!!!");
Thread.sleep(10);
HbaseDao.publishWeiBo("1001", "我没说话!!!");
Thread.sleep(10);
HbaseDao.publishWeiBo("1003", "那谁说的!!!");
Thread.sleep(10);
HbaseDao.publishWeiBo("1001", "反正飞机下线了!!!");
Thread.sleep(10);
HbaseDao.publishWeiBo("1003", "你们爱咋咋地吧!!!");
//获取1002初始化界面
HbaseDao.getInit("1002");
System.out.println("***************222***************");
//1002取关1003
HbaseDao.deleteAttends("1002", "1003");
//获取1002初始化界面
HbaseDao.getInit("1002");
System.out.println("***************333***************");
//1002再次关注1003
HbaseDao.addAttends("1002", "1003");
//获取1002初始化界面
HbaseDao.getInit("1002");
System.out.println("***************444***************");
//1001再次1发布微博
HbaseDao.publishWeiBo("1001", "咋没人了?都走了吗!!!");
//获取1002初始化界面
HbaseDao.getInit("1002");
System.out.println("***************555***************");
//获取1001初始化页面
HbaseDao.getInit("1001");
}
}
结果:
这里说一下调试时出现的bug(因为写博客时异常没保留,所以只能以文字描述了:
1、发现发布微博后,222的值与111一样,初步推断可能是init或发布微博的问题,但后面发现取关后关注,1003发布的微博又出现了,可能是发布微博时对inbox表的操作有问题
2、微博不是按顺序替换的,新发布的微博不会替代以前的微博
结果:我是按9999999999999减时间戳来排序的,发现只写了12位9,导致时间戳减成负数了,导致排序混乱
操作微博表时获取粉丝列族用的是有时间戳的rowkey,导致得不到粉丝列族的值,应该只用发布微博的用户的uid即可