目录
使用的技术
最基本的数据分析平台,主要是走离线批处理模式。每天凌晨对昨天的数据进行批量处理和分析,统计出者种指标和报表,写入MySQL等关系型数据库中。第二天,公司的人就可以看到昨天以及昨天以前的数据分析结果。
但是有些场景下,是没有办法提前对数据进行预处理的,比随机用户抽取、随机页面转化率分析,随机时间范围内随机商品的分析,等等就如同我们之前讲解的那些模块一样。此时,就需要提供一个java web系统,供用户在需要的时候,选择对应的查询和分析条件,然后由我们的系统立即运行一个大数据处理分析作业,在最短的时间内结用户提供她们想要的数据。这就是所谓的交互式用户行力分析。
为什么这套交互式用户行为分析系统,要选择采用Spark技术呢?因Spark在好好调优之后,性能可以达到同等hive mapreduce作业的3倍~10倍,大幅度提升性能之后,减少了用户的等特时间,能够提供更好的用户体验。因此,可以说,交互式的数据分析,是spark一个非常天然的适用场景。
此外,实际的项目做了很多的合并以及改进的,用尽量少的经典模块,涵盖Spark所有的技术点,让大家可以通过这个项目完或对Spark技木点的实战演练。
还有一件很重更的事情,为什么要用Spark RDD API味开发这些复杂的业务逻辑,为什么不直接用SQL?当然,用SQL是可以的,但是要区分一下,SQL主要适合刚才说的大量离线批处理的ETL作业和统计分析逻辑。统计分析探表以及需求灵活,多变,经常会增加,经常逻辑会变,用SQL是很合适的。但是我们这个是套系统,和java web配合的系统,模块和需求都是固定的。用SQL的缺点在于,spark底层自动生成执行计划和代码,我们几乎无法进行深度的调优,遇到问题也不好解决,但是对于我们这种固定需求,少量模块,要求速度和稳定性的系统来说,使用spark RDD API是最好的选择,因为RDD是最原始的API,我们几乎可以控制一切,包括参数整优及数据倾斜的重构和优化等,遇到报错,都是最底层的源码,我们可以很容易进行定和修复问题。这就是为什么本套系统大量采用Spatk RDD API开发复杂业务模块的原因。
用户活跃度分析模块
1.指定时间内话同次数显多的10个户
2.指定时间即内购买商品全额最多的10个用户
3.量近周期力相对之第一个周啊访问次数增长最识的10个用尸
4.最近周期户相对之第一个用期购买商品全部增长最快的10个用户
5.指定周期内正明的新用户在头天访问大数最多的10个用户