当前位置:文档之家› 大数据实例:网站用户行为分析

大数据实例:网站用户行为分析

山西大学研究生项目设计报告(2015 ---- 2016学年第1学期)学院(中心、所):计算机与信息技术学院专业名称:软件工程(专硕)课程名称:大数据处理论文题目:网站用户行为分析授课教师(职称):杜亮研究生姓名:温杰年级:2016级学号:201622405011成绩:评阅日期:山西大学研究生学院2016年12月20日大数据实例:网站用户行为分析大数据实例:网站用户行为分析 (2)一、案例简介 (4)二、案例目的 (4)三、软件工具 (4)四、案例任务 (4)五、实验步骤 (5)5.1、实验步骤一:实验环境准备 (5)5.1.1、linux系统的安装 (5)5.1.2、Hadoop的安装 (6)5.1.3、MySQL的安装 (6)5.1.4、HBase的安装 (8)5.1.5、Hive的安装 (8)5.1.6、Sqoop的安装 (10)5.1.7、Eclipse安装 (12)5.2、实验步骤二:本地数据集上传到数据参考Hive (12)5.2.1、实验数据集的下载 (12)5.2.2、解压下载得到的数据集到指定目录 (12)5.2.3、数据集的预处理 (13)5.3、实验步骤三:Hive数据分析 (15)5.4、实验步骤四:Hive、MySQL、HBase数据互导 (19)5.4.1、Hive预操作 (19)5.4.2、使用Sqoop将数据从Hive导入MySQL (20)5.4.3、使用Sqoop将数据从MySQL导入HBase (21)5.5、实验步骤五:利用R进行数据可视化分析 (22)5.5.1、R安装 (22)5.5.2、可视化分析MySQL中的数据 (23)一、案例简介本案例涉及数据预处理、存储、查询和可视化分析等数据处理全流程所涉及的各种典型操作,涵盖Linux、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用方法。

二、案例目的1、熟悉Linux系统、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用;2、了解大数据处理的基本流程;3、熟悉数据预处理方法;4、熟悉在不同类型数据库之间进行数据相互导入导出;5、熟悉使用R语言进行可视化分析;6、熟悉使用Elipse编写Java程序操作HBase数据库。

三、软件工具图1、软件总体概览图四、案例任务1、安装Linux操作系统2、安装关系型数据库MySQL3、安装大数据处理框架Hadoop4、安装列族数据库HBase5、安装数据仓库Hive6、安装Sqoop7、安装R8、安装Eclipse9、对文本文件形式的原始数据集进行预处理10、把文本文件的数据集导入到数据仓库Hive中11、对数据仓库Hive中的数据进行查询分析12、使用Sqoop将数据从Hive导入MySQL13、使用Sqoop将数据从MySQL导入HBase14、使用R对MySQL中的数据进行可视化分析图2、案例所涉及操作总体概览图五、实验步骤5.1、实验步骤一:实验环境准备5.1.1、linux系统的安装该部分内容略去。

5.1.2、Hadoop的安装该部分内容详见另一篇参考文档:《Ubuntu伪分布式安装Hadoop详细步骤》.5.1.3、MySQL的安装⒈使用如下命令进行安装MySQL:2.启动MySQL服务器:3.确认是否成功:4.进入MySQL Shell界面:5.解决利用Sqoop导入MySQL中文乱码的问题导致导入时中文乱码的原因是character_set_server默认设置为latin1,可以单个设置修改编码方式set character_set_server=utf8;但是重启后会失效,建议使用以下方式修改编码方式。

如下图:重启MySQL服务:service mysql restart;登录MySQL后查看MySQL设置的编码。

如下图所示:5.1.4、HBase的安装该部分内容略去。

5.1.5、Hive的安装1.下载并解压Hive源程序:Hive下载链接2.使用如下命令进入到解压到的目录,重命名解压目录为Hive-1.2.1,修改Hive-1.2.1目录所有者为wenjie.cd /usr/local/sudo mv apache-hive-1.2.1-bin Hive-1.2.1sudo chown wenjie Hive-1.2.1 –R3.配置环境变量为了方便使用,我们把hive命令加入到环境变量中去,命令:gedit ~/.bashrc 文件,在其中加入代码:export HIVE_HOME=/usr/local/Hive-1.2.1export PATH=$PATH:$HIVE_HOME/bin保存退出后,命令source ~/.bashrc,使配置生效。

4.修改/usr/local/Hive-1.2.1/conf下的hive-site.xml将hive-default.xml.template重命名为hive-default.xml;新建一个文件touch hive-site.xml,并在hive-site.xml中粘贴如下配置信息。

5.安装并配置MySQL这里我们采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。

下载MySQL JDBC包:下载链接下载好安装包后将mysql-connector-java-5.1.40.tar.gz解压后放入/usr/local/Hive-1.2.1/lib目录下:6.启动并登陆MySQL Shell命令如下:service mysql startmysql –u wenjie –p新建wenjie_db数据库:配置MySQL,允许hive接入:命令如下:grant all on *.* to wenjie@localhost identified by ‘wj5810831’;#将所有数据库的所有表的所有权限赋给wenjie用户,后面的wj5810831是hive-site.xml中配置的链接密码flush priviledges; #刷新MySQL系统权限关系表启动hive:启动hive之前,先启动hadoop集群命令如下:start-all.sh #启动hadoop集群Hive #启动hive启动hive成功后,即hive配置成功!5.1.6、Sqoop的安装1.下载并解压sqoop 1.4.6:Sqoop下载链接点击下载链接地址下载sqoop安装文件sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz。

下载完成后,执行下面命令:2.修改配置文件sqoop-env.sh命令如下:cd Sqoop-1.4.6/confcat sqoop-env-template.sh >> sqoop-env.shgedit sqoop-env.sh3.配置环境变量打开当前用户的环境变量配置文件,在配置文件中加入SQOOP_HOME变量,并将Sqoop-1.4.6目录下的bin目录加入到PATH变量中。

如图所示:执行命令source ~/.bashrc,使配置文件生效。

4.将上一步骤中下载的mysql驱动包拷贝到Sqoop-1.4.6目录下的lib目录。

5.测试与MySQL的链接首先请确保mysql服务已经启动,使用如下命令测试Sqoop与MySQL之间的连接是否成功:Sqoop list-databases –connect jdbc:mysql://127.0.0.1:3306/ --username wenjie –p执行正确后效果图如下,罗列出MySQL数据服务器中的数据库:5.1.7、Eclipse安装直接在Ubuntu软件中心中查找Eclipse后,点击安装即可。

5.2、实验步骤二:本地数据集上传到数据参考Hive5.2.1、实验数据集的下载本案例采用的数据集为user.zip,包含了一个大规模数据集raw_user.csv(包含2000万条记录),和一个小数据集small_user.csv(只包含30万条记录)。

小数据集small_user.csv是从大规模数据集raw_user.csv中抽取的一小部分数据。

本实验中我们使用的就是小数据集进行测试。

点击进行数据集下载:数据集下载链接5.2.2、解压下载得到的数据集到指定目录我们执行下面命令取出前面10条记录查看一下:可以看出,每行记录都包含5个字段,数据集中的字段及其含义如下:user_id(用户id)item_id(商品id)behaviour_type(包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)user_geohash(用户地理位置哈希值,有些记录中没有这个字段值,所以后面我们会用脚本做数据预处理时把这个字段全部删除)item_category(商品分类)time(该记录产生时间)5.2.3、数据集的预处理1.删除文件的第一行记录,即字段名称raw_user.csv和small_user.csv中的第一行都是字段名称,我们在文件中的数据导入到数据仓库Hive中时,不需要第一行字段名称,因此,这里我们在做数据预处理时,将第一行删除。

命令如下:sed –i ‘1d’raw_user//1d表示删除第1行,同理,3d表示删除//第3行,nd表示删除第n行sed –i ‘1d’small_user//删除small_user中的第一行2.对字段进行预处理下面对数据集进行一些预处理,包括为每一行记录增加一个id字段(让记录具有唯一性),增加一个省份字段(后续为其进行可视化分析),并且丢弃user_geohash字段(后续没有用到该字段)。

下面建一个pre_deal.sh脚本文件,将脚本文件放在测试数据文件目录下。

使用gedid pre_deal.sh,输入如下代码:下面就可以在脚本文件所在的目录中执行脚本,对small_user.csv进行数据预处理,命令如下:bash ./pre_deal.sh small_user.csv user_table.txt执行后,使用head命令查看生成的user_table.txt,不要直接打开3.导入数据库下面要把user_table.txt中的数据最终导入到数据仓库Hive中。

为了完成这个操作,我们首先将user_table.txt上传到分布式文件系统HDFS中,然后在Hive中创建一个外部表,完成数据的导入。

首先,启动hadoop集群。

命令如下:start-all.sh./hdfs dfs –mkdir /user/root/InputFloder/HiveDatabase_UserData./hdfs dfs –put /home/wenjie/下载/TestData/user_table.txt /user/root/InputFloder/HiveDatabase_UserData下面可以使用Web页面查看是否上传成功,如图所示:接下来,启动MySQL和Hive,在Hive中创建数据库wenjie_db;命令如下:create database wenjie_db;在数据库wenjie_db中创建表hive_database_user;显示创建表hive_database_user的信息:5.3、实验步骤三:Hive数据分析查看前10位用户对商品的行为:查询前20位用户购买商品时的时间和商品的种类:用聚合函数count( )计算出表内记录数目在函数内部加上distinct,查出uid不重复的数据记录个数查询2014年12月10日到2014年12月13日有多少人浏览了商品以月的第n天为统计单位,依次显示第n天网站卖出去的商品的个数查询一件商品在某天的购买比例和浏览比例给定购买商品的数量范围,查询某一天在该网站的购买该数量商品的用户id某个地区的用户当天浏览网站的次数首先创建数据表,使用命令如下:Create table scan(province string,scan int) comment ‘this is the search of bigdataday’ row format delimited fields terminated by ‘\t’ stored as textfile;向数据表中插入抽取的数据,命令如下:查看表中的数据:5.4、实验步骤四:Hive、MySQL、HBase数据互导5.4.1、Hive预操作1.创建临时表user_action首先,启动MySQL服务、hadoop集群、Hive.然后,在Hive中创建临时表user_action这个命令执行完之后,Hive会自动在HDFS文件系统中创建对应的数据文件“/user /hive/warehouse/hive_database.db/user_action”,这个数据文件,在我们后面的使用HBase Java API把数据从本地导入到HBase中会使用到。

相关主题