谷粒微博:需求、设计及代码框架

软件

HBase2.1.3

需求

  • 关注用户
  • 取关用户
  • 发布微博
  • 查看微博

表设计

在这里插入图片描述

  • 用户关系表
    • uid:当前用户,也就是操作者的编号,格式:具体值/用户id
    • attends:表示用户关注的人,一个人可以关注多个用户
    • fans:表示用户的粉丝,一个人可以有多个粉丝
    • A关注B的同时,B是A的粉丝
    • 示例:
      在这里插入图片描述
  • 微博内容表
    • uid_ts:微博的编号,格式:用户id_时间戳
    • content:微博的内容
    • 一条微博占用一行
    • 示例:
      在这里插入图片描述
  • 微博收件箱表
    • 显示被关注的人最近发布的3条微博
    • uid:用户编号,格式:用户id
    • info:uid:格式:被关注者的id
    • 时间戳:和weibo:content中微博的时间戳一致
    • 示例:
      在这里插入图片描述

代码框架

第一步:创建Maven项目,添加依赖:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-server</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-mapreduce</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-common</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-endpoint</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-metrics-api</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-thrift</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-auth</artifactId>
    <version>3.1.2</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase.thirdparty</groupId>
    <artifactId>hbase-shaded-netty</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase.thirdparty</groupId>
    <artifactId>hbase-shaded-protobuf</artifactId>
    <version>2.1.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hbase.thirdparty</groupId>
    <artifactId>hbase-shaded-miscellaneous</artifactId>
    <version>2.1.0</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-protocol-shaded</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-protocol</artifactId>
    <version>2.1.3</version>
</dependency>

<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.2.6</version>
</dependency>

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>11.0.2</version>
</dependency>


<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>3.1.2</version>
</dependency>

第二步:在resources目录中创建log4j.properties

设置###

log4j.rootLogger = debug,stdout,D,E

输出信息到控制抬

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

输出DEBUG 级别以上的日志到=E://logs/error.log

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

输出ERROR 级别以上的日志到=E://logs/error.log

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
发布了407 篇原创文章 · 获赞 798 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lianghecai52171314/article/details/104873162