调整文章格式
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
所以,接下来我们用UserBehavior.csv作为数据源,实现一个网站总浏览量的统计。我们可以设置滚动时间窗口,实时统计每小时内的网站PV。
|
||||
|
||||

|
||||
|
||||
在src/main/scala下创建 `PageView.scala` 文件,具体代码如下:
|
||||
|
||||
```scala
|
||||
@@ -57,6 +58,7 @@ object PageView {
|
||||
|
||||
```
|
||||
程序运行的结果:
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -127,9 +129,12 @@ object UniqueVisitor {
|
||||
程序运行的结果:
|
||||
|
||||

|
||||
|
||||
到了这一步,让我们想想,还有没有更好的方案?
|
||||
|
||||
|
||||
|
||||
|
||||

|
||||
|
||||
### 使用布隆过滤器的 UV 统计
|
||||
@@ -291,12 +296,18 @@ object UvWithBloomFilter {
|
||||
```
|
||||
|
||||
程序运行的效果如下所示:
|
||||
|
||||

|
||||
可以发现,我们改进之后的程序,不再是把所有需要统计的数据都放到本地内存里进行计算,而是来一条数据,我们就输出,然后利用布隆过滤器进行判断,并将最新的结果存入Redis。
|
||||
|
||||
|
||||
可以发现,我们改进之后的程序,不再是把所有需要统计的数据都放到本地内存里进行计算,而是来一条数据,我们就输出,然后利用布隆过滤器进行判断,并将最新的结果存入Redis。
|
||||
|
||||
等到程序运行完毕,我们打开 `redis`,输入`hgetall count`查看统计的最终结果,可以发现跟我们之前统计的结果是一致的。
|
||||
|
||||

|
||||
要是嫌利用 redis 的 `bitmap` 自己手动实现一个简单的布隆过滤器过程繁琐的话,我们也可以利用<font color='Tomato'>Flink官方实现的布隆过滤器</font>来实现。具体代码见下:
|
||||
|
||||
|
||||
要是嫌利用 redis 的 `bitmap` 自己手动实现一个简单的布隆过滤器过程繁琐的话,我们也可以利用<font color='Tomato'>Flink官方实现的布隆过滤器</font>来实现。具体代码见下:
|
||||
|
||||
```scala
|
||||
/*
|
||||
@@ -382,7 +393,9 @@ object UvByBloomFilterWithoutRedis {
|
||||
```
|
||||
|
||||
程序的运行结果:
|
||||
|
||||

|
||||
|
||||
***
|
||||
|
||||
### 小结
|
||||
|
||||
Reference in New Issue
Block a user