这是一个系列的文章, 介绍了一个完整的大数据分析案例, 包括有关的软件安装, 数据集的生成, 数据分析以及最终的数据可视化. 本文介绍软件安装和数据集生成.

前置知识要求

  1. linux基本知识, 尤其是shell有关的知识
  2. Java基础知识
  3. SQL语言
  4. Web有关知识(Servlet, JavaScript)

如果其中有没有学过的知识, 建议先对相关知识有基本的了解以后再阅读本文.

软件安装

关于Hadoop平台的软件安装, 网络上有很多教程, 这里推荐阅读厦门大学实验室的有关博客

强烈建议同时阅读各个软件的官网上的安装指南. 由于各软件都在不断的更新, 可能有各种细节的变化, 先阅读官网资料有助于减少由于安装失败浪费的时间.

数据集生成

由于一般比较难获得合适的数据集, 而在练习数据分析的过程中数据本身其实相对来说并不太重要. 因此可以先编写一个小程序, 按照一定的规律产生需要的数据集.

由于数据集由程序产生, 因此数据格式等方面都可以控制, 避免了数据清洗的繁琐步骤, 从而将主要精力放在数据分析上. 此外由于完全掌握数据生成规律, 也可以和后续的统计分析结果相互印证.

用户浏览数据集

用户浏览数据集可以分为5个字段,即用户id,商品id,用户行为,时间,地点. 其中用户行为包括四种情况,即浏览,收藏,加入购物车以及购买. 时间是精确到天的时间,地点是精确到省份的时间.

用户id商品id的处理比较简单,可以直接随机. 对于用户行为, 显然四种操作的发生比例不是均匀的, 因此上述操作实际出现的比例可以大约设置为96:1:2:1. 对于时间, 为了保证随机数据不至于相差太远,可以设置为在最近一年以内随机产生,具体代码如下所示

1
2
3
4
5
6
public String getDay(){
Calendar calendar = Calendar.getInstance();
int off = random.nextInt(365);
calendar.add(Calendar.DAY_OF_YEAR,-off);
return dateFormat.format(calendar.getTime());
}

其中Calendar可以根据给定的偏移计算移动之后的日期, 因此只需要在0~356之间产生一个随机数,并且用当前的日期减去这个随机数即可.对于地点, 可以直接随机产生. 但考虑到各省的人口数量相差比较大, 因此更加精细的做法是根据人口的数量按照比例产生. 有关代码由于长度原因就不贴上来了, 全部的代码都已经开源到GitHub, 点击此处查看代码.

把各个随机器产生的数据收集到一起并按照一定的格式输出为文件, 即可完成数据集的制作. 考虑到每条数据的大约占用43B的空间, 因此可以产生2333万条数据,最终的数据集大小为1GB. 产生的部分数据格式如下所示

1
2
3
4
5
6
7
8
1 26068  255  1 2017-09-11 辽宁省
2 10054 880 1 2017-12-29 山西省
3 28234 87 1 2017-12-06 广东省
4 20285 565 1 2018-07-25 广西壮族自治区
5 19414 337 1 2017-12-03 广东省
6 16584 233 1 2018-03-01 内蒙古自治区
7 14833 102 1 2018-02-16 山东省
8 20282 750 1 2018-03-15 吉林省

其中第一列为记录的序号,之后依次是用户id,商品id,用户行为,时间地点. 注意到, 上述数据中用户的行为与时间,地点基本没有关联. 由于数据的随机, 因此单独观察一个用户时,该用户会在各种时间和地点产生记录. 针对这一问题,可以先随机产生若干用户,然后以用户的属性产生数据.

最后更新: 2024年04月18日 13:26

版权声明:本文为原创文章,转载请注明出处

原始链接: https://lizec.top/2018/08/14/%E5%A4%A7%E6%95%B0%E6%8D%AE%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E5%92%8C%E6%95%B0%E6%8D%AE%E7%94%9F%E6%88%90/