分享

(偏业务)针对跨天去重的计算如何做?

xingoo 发表于 2017-2-9 10:49:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 17 21428
场景:
每天跑一部分分析数据,计算一项业务的人数。
但是最终查询的时候,是多天一起查的,这个时候就涉及对人数的去重。


初步的想法:
1 退化版本:每天计算一个数据,隔天累加。为了保证数据的一定范围内的准确性,按月重新计算一次,隔月再累加。
2 精确版本:保存每天的人员id,在界面查询的时候,去重。可以考虑引入CLOB存储大的id拼接的字符串,然后解析去重。

上面的精确版本,在数据量大的时候会很慢。

有没有什么比较好的解决方案?

已有(17)人评论

跳转到指定楼层
叫我胖哥 发表于 2017-2-9 10:51:38
顶一下,mark
回复

使用道具 举报

easthome001 发表于 2017-2-9 11:59:16
方案太多了,不过首先需要说下你的架构。像楼主这个业务,比较适合实时框架,比如spark,storm。实时处理,然后不断累加。

当然批处理也可以。比如hive sql,不过这个比较慢。也可以使用spark sql或则impala等。
回复

使用道具 举报

desehawk 发表于 2017-2-9 12:13:26
spark sql就简单了,一个语句distinct就可以去重了。
rdd也挺简单的
回复

使用道具 举报

xingoo 发表于 2017-2-9 12:22:51
desehawk 发表于 2017-2-9 12:13
spark sql就简单了,一个语句distinct就可以去重了。
rdd也挺简单的

可能楼上几位还没理解我的意思,是我说的不够详细。
我们现在是采用每天定时跑离线任务的方式,采用的就是sqoop+spark+oozie这套架构。

再回到问题上,问题的关键点在于每次离线任务只能计算当天或者全部的一个数据。但是这个数据不是出一个固定报表,而是给前端页面显示的。前端页面可以查询任意时间范围内的数据。

比如一个人通过前端查询2月1号到9号的数据,查询响应要求是毫秒级。(所以临时去跑spark sql这种方案肯定是不行的)。最恶心的是,这个范围具有很大的灵活性,可以使1号到9号,也可以是1号到5号,因此没有办法实现计算出精确的人数。
回复

使用道具 举报

nextuser 发表于 2017-2-9 12:27:30
本帖最后由 nextuser 于 2017-2-9 12:28 编辑
xingoo 发表于 2017-2-9 12:22
可能楼上几位还没理解我的意思,是我说的不够详细。
我们现在是采用每天定时跑离线任务的方式,采用的就 ...

哪必须使用搜索框架了,比如ElasticSearch
推荐板块链接
Solr|Nutch|Lucene|ElasticSearch

回复

使用道具 举报

xingoo 发表于 2017-2-9 12:30:02
nextuser 发表于 2017-2-9 12:27
哪必须使用搜索框架了,比如ElasticSearch
咱们有这个板块
Solr|Nutch|Lucene|ElasticSearch

采用ES之前试验过,数据量大的时候,做聚合是很慢的。尤其是聚合字段的唯一值很多的时候。比如一个字段只有几个值,要做聚合很简单;但是如果这个字段有几万,几十万,再加上数据量比较大那就很慢了。
另外,es的结果并不是那么精确...有一定的误差性。
回复

使用道具 举报

nextuser 发表于 2017-2-9 12:32:57
xingoo 发表于 2017-2-9 12:30
采用ES之前试验过,数据量大的时候,做聚合是很慢的。尤其是聚合字段的唯一值很多的时候。比如一个字段只 ...

框架基本就这些了,剩下的只能靠我们自己 优化和解决了。
回复

使用道具 举报

xingoo 发表于 2017-2-9 12:34:51
nextuser 发表于 2017-2-9 12:32
框架基本就这些了,剩下的只能靠我们自己 优化和解决了。

所以标题标明了偏业务....~~~~(>_<)~~~~
总感觉这个问题应该会很常见,大家应该都有一些解决的方案吧。
我们现在采用的就是上面隔天累加的那种方式,误差太大了...
回复

使用道具 举报

einhep 发表于 2017-2-9 14:21:41
xingoo 发表于 2017-2-9 12:34
所以标题标明了偏业务....~~~~(>_


并且框架说的不全。hadoop直接搜索??应该至少有hive或则hbase吧。
再回到问题上,问题的关键点在于每次离线任务只能计算当天或者全部的一个数据。但是这个数据不是出一个固定报表,而是给前端页面显示的。前端页面可以查询任意时间范围内的数据。

这个是实现搜索功能吧
建议还是使用搜索框架。
对于es,聚合慢,个人认为需要从两个方面解决
首先需要分析数据。为什么数据重复的如此多。从源头解决。
第二个就是在聚合上下功夫。
就像百度和Google,同样搜索引擎,但是他们的效率也是不一样的。
只能帮到这里,其它需要楼主自己深一步去

回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条