sparkstream计算pv,uv,每小时热词

数据仓库的构建

  • 通过shell 编写kafka的消费者,将数据处理到源数据落地区
  •  周期性的装载数据到hive中,构建了小时级的数据仓库

 实时计算

计算一个小时的热词

由于接收到的是自己通过接口发的12年的微博数据,所以并没有设计滑动窗口,而是按照发微博时间来统计。如果需要的话,只需要把滑动时间为1小时,滑动大小设置为想要的大小就可以统计隔一段时间一小时内的热词,然后通过redis的hincrBy按时间存到redis中

计算PV

拿到数据后处理,在foreachPartiton直接用reids的incr加入数据库

计算UV

数据处理后用redis的set或者hyperloglog自动去重存入redis中

定期将redis的数据写入hbase,进行数据持久化,供前端展示

难点总结

1.curl使用问题

--data "param1=value1&param2=value" 和 -d 查找自资料-d后传递的参数都没有“”,但是实际操作发现不加引号的话会把数据中的&当作第二个参数处理

2.热词的统计

我们用到自然语言处理,采用nlp分词,对微博数据进行分词处理

3.flatmap的使用

map中函数式方法返回值为对象,也就是原始流中有n个元素,处理之后的流中元素个数也是n个。即使你在返回的时候返回了多个元素如数组,他也会把数组当成一个对象处理。
flatMap中函数式方法返回值为流,flat为扁平的意思,也就是说,我们可以通过flatMap改变原始流中对象的个数,flatMap会将返回的流合并成一个流,而不是当成对象处理。

有二箱鸡蛋,每箱5个,现在要把鸡蛋加工成煎蛋,然后分给学生。

map做的事情:把二箱鸡蛋分别加工成煎蛋,还是放成原来的两箱,分给2组学生;

flatMap做的事情:把二箱鸡蛋分别加工成煎蛋,然后放到一起【10个煎蛋】,分给10个学生;

4.redis连接池配置

每一个partition运行在一台机器上,所以把redis的获取放回放在foreachpartition循环那就可以

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值