大数据期末课程设计实验案例:网站用户行为分析

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

案例任务
1.安装Linux操作系统
2.安装关系型数据库MySQL
3.安装大数据处理框架Hadoop
4.安装列族数据库HBase
5.安装数据仓库Hive
6.安装Sqoop
7.安装R
8.安装Eclipse
9.对文本文件形式的原始数据集进行预处理
10.把文本文件的数据集导入到数据仓库Hive中
11.对数据仓库Hive中的数据进行查询分析
12.使用Sqoop将数据从Hive导入MySQL
13.使用Sqoop将数据从MySQL导入HBase
14.使用HBase Java API把数据从本地导入到HBase中
15.使用R对MySQL中的数据进行可视化分析

在这里插入图片描述

说明:Word可能导致部分命令或代码有问题,每一个步骤都提供参考链接,详细查看参考链接

首先1.安装Linux系统;
参考https://dblab.xmu.edu.cn/blog/285/
以下是各软件的安装,通过启动来验证安装
所有准备好在这里
cd /home/hadoop/a
在这里插入图片描述

用户准备工作
sudo useradd -m hadoop -s /bin/bash
Shell 命令这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 shell。
接着使用如下命令设置密码,可简单设置为 hadoop,按提示输入两次密码:
sudo passwd hadoop
密码:123
可为 hadoop 用户增加管理员权限,方便部署,避免一些对新手来说比较棘手的权限问题:

sudo adduser hadoop sudo
更新apt
用 hadoop 用户登录后,我们先更新一下 apt,后续我们使用 apt 安装软件,如果没更新可能有一些软件安装不了。按 ctrl+alt+t 打开终端窗口,执行如下命令:
sudo apt-get update
修改各个节点的主机名
sudo vi /etc/homename

安装ssh工具
1.打开终端键入如下命令:
apt-get update
apt-get install openssh-server
启动SSH服务
1.键入如下命令:
/etc/init.d/ssh start
重启命令与关闭命令如下:
/etc/init.d/ssh restart #重启SSH服务
/etc/init.d/ssh stop #关闭SSH服务
查看进程,检查是否启动成功,键入如下命令:
ps -e | grep sshd
配置root用户SSH服务

Ubuntu中SSH服务安装完成后查看是否允许root用户登陆,若不允许则无法远程登陆root用户,需要修改配置
1.首先,打开“/etc/ssh/sshd_config”
gedit /etc/ssh/sshd_config
2.查看是否有“PermitRootLogin yes”,没有添加即可,完成后保存退出
解决进程问题
sudo rm -r -f /var/lib/dpkg/lock
sudo rm -r -f /var/lib/dpkg/lock-frontend

安装vim
sudo apt-get install vim
为当前用户设置权限
sudo chown -R 当前用户名 ./hadoop
软件安装注意!!!先解压好软件,再去到解压后所在目录在开始运行安装命令
大数据实验软件安装详细过程参考:
Linux操作系统的安装:https://dblab.xmu.edu.cn/blog/285/
Hadoop安装教程:https://dblab.xmu.edu.cn/blog/7/
MySQL的安装:https://dblab.xmu.edu.cn/blog/1002/
HBase的安装:https://dblab.xmu.edu.cn/blog/588/
Hive的安装:https://dblab.xmu.edu.cn/blog/1080/
Sqoop的安装:https://dblab.xmu.edu.cn/blog/1015/

2.安装Hadoop;
Hadoop安装教程参考https://dblab.xmu.edu.cn/blog/7/

我们选择将 Hadoop 安装至 /usr/local/ 中:

cd /home/hadoop/a
sudo tar -zxvf  hadoop-2.7.1.tar.gz -C /usr/local    # 解压到/usr/local中
cd /usr/local/
sudo mv hadoop-2.7.1/ ./hadoop      
sudo chown -R hadoop /hadoop       # 修改文件权限

Hadoop 解压后即可使用。输入如下命令来检查 Hadoop 是否可用,成功则会显示 Hadoop 版本信息:

cd /usr/local/hadoop
./bin/hadoop version

安装与启动

ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh 

在这里插入图片描述

3.安装MySQL;
详细参考:https://dblab.xmu.edu.cn/blog/1002/

sudo apt-get update  #更新软件源
sudo apt-get install mysql-server  #安装mysql

启动和关闭mysql服务器:

service mysql start

密码:123
关闭

service mysql stop

确认是否启动成功,mysql节点处于LISTEN状态表示启动成功:

sudo netstat -tap | grep mysql

启动:service mysql start

sudo netstat -tap | grep mysql
mysql -u root -p

在这里插入图片描述

4.安装HBase;
详细参考:https://dblab.xmu.edu.cn/blog/588/

1.1 解压安装包hbase-1.1.2-bin.tar.gz放至路径 /usr/local,命令如下:

cd /home/hadoop/a
 sudo tar -zxf hbase-1.1.5-bin.tar.gz  -C /usr/local

1.2 将解压的文件名hbase-1.1.2改为hbase,以方便使用,命令如下:

cd /usr/local
sudo mv /usr/local/ hbase-1.1.5 /usr/local/hbase

1.3 配置环境变量
将hbase下的bin目录添加到path中,这样,启动hbase就无需到/usr/local/hbase目录下,大大的方便了hbase的使用。教程下面的部分还是切换到了/usr/local/hbase目录操作,有助于初学者理解运行过程,熟练之后可以不必切换。
编辑~/.bashrc文件加入如下内容

vi ~/.bashrc
export PATH=$PATH:/usr/local/hbase/bin

保存后退出
再执行source命令使上述配置在当前终端立即生效

source ~/.bashrc

4 添加HBase权限

cd /usr/local
sudo chown -R hadoop ./hbase      

#将hbase下的所有文件的所有者改为hadoop,hadoop是当前用户的用户名。
启动测试

cd /usr/local/hbase
bin/start-hbase.sh

在这里插入图片描述

2.2 伪分布式模式配置
1.配置/usr/local/hbase/conf/hbase-env.sh。命令如下:

vi /usr/local/hbase/conf/hbase-env.sh

配置JAVA_HOME,HBASE_CLASSPATH,HBASE_MANAGES_ZK.
HBASE_CLASSPATH设置为本机Hadoop安装目录下的conf目录(即/usr/local/hadoop/conf)

vim /usr/local/hadoop/conf
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_CLASSPATH=/usr/local/hadoop/conf 
export HBASE_MANAGES_ZK=true

2.配置/usr/local/hbase/conf/hbase-site.xml
用命令vi打开并编辑hbase-site.xml,命令如下:

vi /usr/local/hbase/conf/hbase-site.xml
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>

接下来测试运行HBase。
第一步:首先登陆ssh,之前设置了无密码登陆,因此这里不需要密码;再切换目录至/usr/local/hadoop ;再启动hadoop,如果已经启动hadoop请跳过此步骤。命令如下:

ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

切换目录至/usr/local/hbase;再启动HBase.命令如下:

cd /usr/local/hbase
bin/start-hbase.sh

停止HBase运行,命令如下:

bin/stop-hbase.sh

5.安装Hive;启动验证
详细过程参考Hive的安装:https://dblab.xmu.edu.cn/blog/1080/
先去到软件包目录

 cd /home/hadoop/a

先把软件解压到/usr/local中,再执行如下操作,这里不做演示了,接着如下

cd /usr/local/
sudo mv apache-hive-3.1.2-bin hive       # 将文件夹名改为hive
sudo chown -R dblab:dblab hive            # 修改文件权限

vim编辑器打开.bashrc文件,命令如下:

vim ~/.bashrc    

在该文件最前面一行添加如下内容:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export HADOOP_HOME=/usr/local/hadoop 

HADOOP_HOME需要被配置成你机器上Hadoop的安装路径,比如这里是安装在/usr/local./hadoop目录。
保存退出后,运行如下命令使配置立即生效:

source ~/.bashrc

修改/usr/local/hive/conf下的hive-site.xml
执行如下命令:

cd /usr/local/hive/conf
sudo mv hive-default.xml.template hive-default.xml

使用vim编辑器新建一个配置文件hive-site.xml,命令如下:

cd /usr/local/hive/conf
sudo vim hive-site.xml

在hive-site.xml中添加如下配置信息:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>username to use against metastore database</description>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>
</configuration>

然后,按键盘上的“ESC”键退出vim编辑状态,再输入:wq,保存并退出vim编辑器。

#将mysql-connector-java-5.1.40-bin.jar拷贝到/usr/local/hive/lib目录下 解压后

cd  /自己软件压缩包的位置
sudo tar -zxvf mysql-connector-java-5.1.40.tar.gz

Sudo cp/home/hadoop/Desktop/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/hive/lib

在这里插入图片描述

cd /usr/local/hive/lib

3.启动并登陆mysql

sudo  service mysql start #启动mysql服务
 mysql -u root -p  #登陆shell界面

自己的 mysql密码:123

在终端上输入以下命令重启MySQL:

sudo /etc/init.d/mysql stop 
sudo /etc/init.d/mysql start 
 service mysql start #启动mysql服务
 mysql -u root -p  #登陆shell界面
  1. 新建hive数据库。
mysql> create database hive;    #这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据

mysql
5. 配置mysql允许hive接入:
先刷新一下权限表。
mysql> flush privileges;
mysql> grant all on . to hive@localhost identified by ‘hive’; #将所有数据库的所有表的所有权限赋给hive用户,后面的hive是配置hive-site.xml中配置的连接密码
mysql> flush privileges; #刷新mysql系统权限关系表
注意!!!
启动hive之前,请先启动hadoop集群。
验证

cd /usr/local/hadoop
./sbin/start-all.sh
cd /usr/local/hive
./bin/hive

在这里插入图片描述

然后,执行jps命令看一下当前运行的进程:
1.jps
如果出现下面这些进程,说明Hadoop启动成功了。
3765 NodeManager
3639 ResourceManager
3800 Jps
3261 DataNode
3134 NameNode
3471 SecondaryNameNode

6.安装Sqoop;
详细参考Sqoop的安装:https://dblab.xmu.edu.cn/blog/1015/

 cd /home/hadoop/a

sudo tar -zxvf  sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local #解压安装文件
cd /usr/local
sudo mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha sqoop #修改文件名
sudo chown -R hadoop:hadoop sqoop #

修改文件夹属主,如果你当前登录用户名不是hadoop,
请修改成你自己的用户名
2. 修改配置文件sqoop-env.sh

cd sqoop/conf/

cat sqoop-env-template.sh  >> sqoop-env.sh  

#将sqoop-env-template.sh复制一份并命名为sqoop-env.sh

vim sqoop-env.sh    

#编辑sqoop-env.sh

export HADOOP_COMMON_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=/usr/local/hadoop
export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
  1. 配置环境变量
    打开当前用户的环境变量配置文件:
vim ~/.bashrc

在配置文件第一行键入如下信息:

export SQOOP_HOME=/usr/local/sqoop
export PATH=$PATH:$SBT_HOME/bin:$SQOOP_HOME/bin
export CLASSPATH=$CLASSPATH:$SQOOP_HOME/lib

执行下面命令让配置文件立即生效:

source ~/.bashrc

将mysql驱动包拷贝到 S Q O O P H O M E / l i b 下面要把 M y S Q L 驱动程序拷贝到 SQOOP_HOME/lib 下面要把MySQL驱动程序拷贝到 SQOOPHOME/lib下面要把MySQL驱动程序拷贝到SQOOP_HOME/lib目录下,首先请在Linux系统的浏览器中请点击mysql驱动包下载地址下载驱动包。下载后,一般文件会被浏览器默认放置在当前用户的下载目录下,本教程采用hadoop用户登录Linux系统,因此,下载文件被默认放置在“/home/hadoop/下载”目录下面。
下面执行命令拷贝文件:
去到软件所在目录

 cd /home/hadoop/a

#解压mysql驱动包

sudo tar -zxvf  mysql-connector-java-5.1.40.tar.gz 

#解压mysql驱动包
ls #这时就可以看到解压缩后得到的目录mysql-connector-java-5.1.40

cp ./mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /usr/local/sqoop/lib

cd /usr/local/sqoop/lib

测试与MySQL的连接

首先请确保mysql服务已经启动了,如果没有启动,请执行下面命令启动:

service mysql start

密码:123
然后就可以测试sqoop与MySQL之间的连接是否成功:
测试sqoop与MySQL之间的连接是否成功:

sqoop list-databases --connect jdbc:mysql://127.0.0.1:3306/ --username root -P

在这里插入图片描述

7.安装R;(这里有时遇到问题自己都解决不了)Ubuntu 18 版本这里的问题实在没法解决!!
利用vim打开/etc/apt/sources.list文件
1.sudo vim /etc/apt/sources.list
在文件的最后一行添加厦门大学的镜像源:

deb http://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/linux/ubuntu/ trusty/

退出vim,更新软件源列表
1.sudo apt-get update

如果更新软件源出现由于没有公钥,无法验证下列签名的错误,请执行如下命令: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 51716619E084DAB9
安装R语言
1.sudo apt-get install r-base
Shell 命令
会提示“您希望继续执行吗?[Y/n]”,可以直接键盘输入“Y”,就可以顺利安装结束。
安装结束后,可以执行下面命令启动R:
1.R
启动后,会显示如下信息,并进入“>”命令提示符状态:
R version 3.3.2 (2016-10-31) – “Sincere Pumpkin Patch”
Copyright © 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用’license()'或’licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.
用’contributors()'来看合作者的详细情况
用’citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用’demo()'来看一些示范程序,用’help()'来阅读在线帮助文件,或
用’help.start()'通过HTML浏览器来看帮助文件。
用’q()'退出R.
“>”就是R的命令提示符,你可以在后面输入R语言命令。
可以执行下面命令退出R:
1.>q()
在这里插入图片描述

  1. 安装Eclipse

在这里插入图片描述

本地数据集上传到数据仓库Hive
user.zip下载地址:https://pan.baidu.com/s/1nuOSo7B

首先建立一个用于运行本案例的目录bigdatacase
如果你把user.zip下载到了其他目录,这里请进入到你自己的存放user.zip的目录。
下面需要把user.zip进行解压缩,我们需要首先建立一个用于运行本案例的目录bigdatacase
请执行以下命令:user.zip注意自己的文件目录
1.cd /usr/local
2.ls
3.sudo mkdir bigdatacase
4.//这里会提示你输入当前用户(本教程是hadoop用户名)的密码

5.//下面给hadoop用户赋予针对bigdatacase目录的各种操作权限
6.sudo chown -R hadoop:hadoop ./bigdatacase
7.cd bigdatacase
8.//下面创建一个dataset目录,用于保存数据集
9.mkdir dataset
10.//下面就可以解压缩user.zip文件
11.cd ~ //表示进入hadoop用户的目录
12.cd 下载
13.ls
14.unzip user.zip -d /usr/local/bigdatacase/dataset
15.cd /usr/local/bigdatacase/dataset
16.ls
在这里插入图片描述

raw_user.csv和small_user.csv。
我们执行下面命令取出前面5条记录看一下:

head -5 raw_user.csv

在这里插入图片描述

数据集的预处理详细参考:https://dblab.xmu.edu.cn/blog/959/

1.删除文件第一行记录,即字段名称
raw_user和small_user中的第一行都是字段名称,我们在文件中的数据导入到数据仓库Hive中时,不需要第一行字段名称,因此,这里在做数据预处理时,删除第一行
cd /usr/local/bigdatacase/dataset
//下面删除raw_user中的第1行
sed -i ‘1d’ raw_user //1d表示删除第1行,同理,3d表示删除第3行,nd表示删除第n行
//下面删除small_user中的第1行
sed -i ‘1d’ small_user
//下面再用head命令去查看文件的前5行记录,就看不到字段名称这一行了
head -5 raw_user.csv
可以看出,每行记录都包含5个字段,数据集中的字段及其含义如下:
在这里插入图片描述

user_id(用户id)
item_id(商品id)
behaviour_type(包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)
user_geohash(用户地理位置哈希值,有些记录中没有这个字段值,所以后面我们会用脚本做数据预处理时把这个字段全部删除)
item_category(商品分类)
time(该记录产生时间)

2.对字段进行预处理

下面对数据集进行一些预处理,包括为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)。
下面我们要建一个脚本文件pre_deal.sh,请把这个脚本文件放在dataset目录下,和数据集small_user.csv放在同一个目录下:
cd /usr/local/bigdatacase/dataset
vim pre_deal.sh
上面使用vim编辑器新建了一个pre_deal.sh脚本文件,请在这个脚本文件中加入下面代码:
(Word文档导致部分代码可能出错参考https://dblab.xmu.edu.cn/blog/959/

#!/bin/bash
#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
outfile=KaTeX parse error: Expected 'EOF', got '#' at position 3: 2 #̲注意!!最后的infile > $outfile必须跟在}’这两个字符的后面
awk -F “,” ‘BEGIN{
srand();
id=0;
Province[0]=“山东”;Province[1]=“山西”;Province[2]=“河南”;Province[3]=“河北”;Province[4]=“陕西”;Province[5]=“内蒙古”;Province[6]=“上海市”;
Province[7]=“北京市”;Province[8]=“重庆市”;Province[9]=“天津市”;Province[10]=“福建”;Province[11]=“广东”;Province[12]=“广西”;Province[13]=“云南”;
Province[14]=“浙江”;Province[15]=“贵州”;Province[16]=“新疆”;Province[17]=“西藏”;Province[18]=“江西”;Province[19]=“湖南”;Province[20]=“湖北”;
Province[21]=“黑龙江”;Province[22]=“吉林”;Province[23]=“辽宁”; Province[24]=“江苏”;Province[25]=“甘肃”;Province[26]=“青海”;Province[27]=“四川”;
Province[28]=“安徽”; Province[29]=“宁夏”;Province[30]=“海南”;Province[31]=“香港”;Province[32]=“澳门”;Province[33]=“台湾”;
}
{
id=id+1;
value=int(rand()*34);
print id"\t"$1"\t"$2"\t"$3"\t"$5"\t"substr($6,1,10)"\t"Province[value]
}’ $infile > $outfile
输入后查看
在这里插入图片描述

上面的代码的基本形式是:
awk -F “,” ‘处理逻辑’ $infile > $outfile
使用awk可以逐行读取输入文件,并对逐行进行相应操作。

下面就可以执行pre_deal.sh脚本文件,来对small_user.csv进行数据预处理,命令如下:
cd /usr/local/bigdatacase/dataset
bash ./pre_deal.sh small_user.csv user_table.txt
可以使用head命令查看生成的user_table.txt,不要直接打开,文件过大,会出错,下面查看前10行数据:

head -10 user_table.txt

在这里插入图片描述

a.启动HDFS

请登录Linux系统,打开一个终端,执行下面命令启动Hadoop:

cd /usr/local/hadoop
./sbin/start-all.sh

然后,执行jps命令看一下当前运行的进程:

jps

如果出现下面这些进程,说明Hadoop启动成功了。

3765 NodeManager
3639 ResourceManager
3800 Jps
3261 DataNode
3134 NameNode
3471 SecondaryNameNode

b.把user_table.txt上传到HDFS中
现在,我们要把Linux本地文件系统中的user_table.txt上传到分布式文件系统HDFS中,存放在HDFS中的“/bigdatacase/dataset”目录下。
首先,请执行下面命令,在HDFS的根目录下面创建一个新的目录bigdatacase,并在这个目录下创建一个子目录dataset,如下:

cd /usr/local/hadoop
./bin/hdfs dfs -mkdir -p /bigdatacase/dataset

然后,把Linux本地文件系统中的user_table.txt上传到分布式文件系统HDFS的“/bigdatacase/dataset”目录下,命令如下:

cd /usr/local/hadoop
./bin/hdfs dfs -put /usr/local/bigdatacase/dataset/user_table.txt /bigdatacase/dataset

下面可以查看一下HDFS中的user_table.txt的前10条记录,命令如下:

cd /usr/local/hadoop
./bin/hdfs dfs -cat /bigdatacase/dataset/user_table.txt | head -10

在这里插入图片描述

c.在Hive上创建数据库
下面,请在Linux系统中,再新建一个终端(可以在刚才已经建好的终端界面的左上角,点击“终端”菜单,在弹出的子菜单中选择“新建终端”)。因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库:
启动MySQL
service mysql start //可以在Linux的任何目录下执行该命令

由于Hive是基于Hadoop的数据仓库,使用HiveQL语言撰写的查询语句,最终都会被Hive自动解析成MapReduce任务由Hadoop去具体执行,因此,需要启动Hadoop,然后再启动Hive。由于前面我们已经启动了Hadoop,所以,这里不需要再次启动Hadoop。下面,在这个新的终端中执行下面命令进入Hive:
启动Hive

cd /usr/local/hive
./bin/hive   

在这里插入图片描述

启动成功以后,就进入了“hive>”命令提示符状态,可以输入类似SQL语句的HiveQL语句。
hive> create database dblab;
hive> use dblab;
hive
d.创建外部表
关于数据仓库Hive的内部表和外部表的区别,请访问网络文章《Hive内部表与外部表的区别》。本教程采用外部表方式。
这里我们要在数据库dblab中创建一个外部表bigdata_user,它包含字段(id, uid, item_id, behavior_type, item_category, date, province),请在hive命令提示符下输入如下命令:

hive> CREATE EXTERNAL TABLE dblab.bigdata_user(id INT,uid STRING,item_id STRING,behavior_type INT,item_category STRING,visit_date DATE,province STRING) COMMENT 'Welcome to xmu dblab!' ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/bigdatacase/dataset';
hive
对于这条语句中LOCATION参数的含义如果有疑问,可以阅读博客《关于数据仓库Hive建表时的LOCATION参数问题》。
e.查询数据
上面已经成功把HDFS中的“/bigdatacase/dataset”目录下的数据加载到了数据仓库Hive中,我们现在可以使用下面命令查询一下:
hive> select * from bigdata_user limit 10;
在这里插入图片描述

hive> select behavior_type from bigdata_user limit 10;
在这里插入图片描述

Hive数据分析参考:https://dblab.xmu.edu.cn/blog/1005/
操作Hive
请登录Linux系统(本教程统一采用hadoop用户名登录系统),然后,打开一个终端(可以按快捷键Ctrl+Alt+T)。
本教程中,Hadoop的安装目录是“/usr/local/hadoop”,Hive的安装目录是“/usr/local/hive”。
因为需要借助于MySQL保存Hive的元数据,所以,请首先启动MySQL数据库,请在终端中输入下面命令:

service mysql start //可以在Linux的任何目录下执行该命令

请执行下面命令启动Hadoop(如果你已经启动了Hadoop就不用再次启动了):

cd /usr/local/hadoop
./sbin/start-all.sh

执行jps命令看一下当前运行的进程:

jps

继续执行下面命令启动进入Hive:

cd /usr/local/hive
./bin/hive   //启动Hive

在“hive>”命令提示符状态下执行下面命令:

hive> use dblab; //使用dblab数据库
hive> show tables; //显示数据库中所有表。
hive> show create table bigdata_user; //查看bigdata_user表的各种属性;

执行部分结果如下:
在这里插入图片描述

可以执行下面命令查看表的简单结构:

hive> desc bigdata_user;
执行部分结果如下:
在这里插入图片描述

二、简单查询分析
先测试一下简单的指令:
hive> select behavior_type from bigdata_user limit 10;//查看前10位用户对商品的行为
执行部分结果如下:
在这里插入图片描述

三、查询条数统计分析
(1)用聚合函数count()计算出表内有多少条行数据
hive> select count(*) from bigdata_user;//用聚合函数count()计算出表内有多少条行数据
执行结果部分如下:
在这里插入图片描述

可视化分析MySQL中的数据
(按步骤操作,这里要先快照备份,有可能会出错自己解决不了,否则前功尽弃)
安装依赖库
为了完成可视化功能,我们需要为R安装一些依赖库,包括:RMySQL、ggplot2、devtools和recharts。
RMySQL是一个提供了访问MySQL数据库的R语言接口程序的R语言依赖库。
ggplot2和recharts则是R语言中提供绘图可视化功能的依赖库。
请启动R进入R命令提示符状态,执行如下命令安装RMySQL:
1.> install.packages(‘RMySQL’)
R
上面命令执行后, 屏幕会提示"Would you like to user a personal library instead?(y/n)"等问题,只要遇到提问,都在键盘输入y后回车即可。然后,屏幕会显示“—在此连线阶段时请选用CRAN的镜子—”,并会弹出一个白色背景的竖条形窗口,窗口标题是“HTTPS CRAN mirros”,标题下面列出了很多国家的镜像列表,我们可以选择位于China的镜像,比如,选择“China(Beijing)[https]”,然后点击“ok”按钮,就开始安装了。安装过程需要几分钟(当然,也和当前网络速度有关系)。
由于不同用户的Ubuntu开发环境不一样,安装有很大可能因为缺少组件导致失败,如果出现如下错误信息:
Configuration failed because libmysqlclient was not found. Try installing:

  • deb: libmariadb-client-lgpl-dev (Debian, Ubuntu 16.04)
    libmariadbclient-dev (Ubuntu 14.04)
  • rpm: mariadb-devel | mysql-devel (Fedora, CentOS, RHEL)
  • csw: mysql56_dev (Solaris)
  • brew: mariadb-connector-c (OSX)

    ERROR: configuration failed for package ‘RMySQL’
  • removing ‘/home/hadoop/R/x86_64-pc-linux-gnu-library/3.3/RMySQL’

下载的程序包在‘/tmp/RtmpvEArxz/downloaded_packages’里
Warning message:
In install.packages(“RMySQL”) : 安装程序包‘RMySQL’时退出狀態的值不是0
只要根据错误给出的错误信息,进行操作即可。q()退出R命令提示符状态,回到Shell状态,笔者的系统是Ubuntu 16.04,那么,根据上面的英文错误信息,就需要在Shell命令提示符状态下执行下面命令安装libmariadb-client-lgpl-dev:
1.sudo apt-get install libmariadb-client-lgpl-dev
然后,再次输入下面命令进入R命令提示符状态:
1.R
启动后,并进入“>”命令提示符状态。然后,执行如下命令安装绘图包ggplot2,如果还出现缺少组件的错误,请按照上面的解决方案解决!
1.> install.packages(‘ggplot2’)
R
然后,屏幕会显示“—在此连线阶段时请选用CRAN的镜子—”,并会弹出一个白色背景的竖条形窗口,窗口标题是“HTTPS CRAN mirros”,标题下面列出了很多国家的镜像列表,我们可以选择位于China的镜像,比如,选择“China(Beijing)[https]”,然后点击“ok”按钮,就开始安装了。这个命令运行后,大概需要安装10分钟时间(当然,也和当前网络速度有关系)。
下面继续运行下面命令安装devtools:
1.> install.packages(‘devtools’)
R
如果在上面安装devtools的过程中,又出现了错误,处理方法很简单,还是按照上面介绍的方法,根据屏幕上给出的英文错误信息,缺少什么软件,就用sudo apt-get install命令安装该软件就可以了。笔者在Ubuntu16.04上执行devtools安装时,出现了三次错误,笔者根据每次错误的英文提示信息,安装了三个软件libssl-dev、libssh2-1-dev、libcurl4-openssl-dev,安装命令如下:
1.sudo apt-get install libssl-dev
2.sudo apt-get install libssh2-1-dev
3.sudo apt-get install libcurl4-openssl-dev
Shell 命令
读者在安装过程中,可能会出现不同的错误,按照同样的处理方法可以顺利解决。
下面在R命令提示符下再执行如下命令安装taiyun/recharts:
1.> devtools::install_github(‘taiyun/recharts’)

结果测试与效果演示步骤

ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh 

在这里插入图片描述

MySQL

service mysql start
sudo netstat -tap | grep mysql
mysql -u root -p

密码:123
在这里插入图片描述

cd /usr/local/hadoop
./sbin/start-dfs.sh

在这里插入图片描述

cd /usr/local/hive
./bin/hive

在这里插入图片描述

jps 

在这里插入图片描述

输入 R
接着输入如下
在这里插入图片描述

接着输入
在这里插入图片描述

summary(user_action$behavior_type)
summary(as.numeric(user_action$behavior_type))
library(ggplot2)
ggplot(user_action,aes(as.numeric(behavior_type)))+geom_histogram()

在这里插入图片描述

结果展示

在这里插入图片描述

temp <- subset(user_action,as.numeric(behavior_type)==4) # 获取子数据集
count <- sort(table(temp$item_category),decreasing = T) #排序
print(count[1:10]) # 获取第1到10个排序结果
result <- as.data.frame(count[1:10]) #将count矩阵结果转换成数据框
ggplot(result,aes(Var1,Freq,col=factor(Var1)))+geom_point()

在这里插入图片描述

month <- substr(user_action$visit_date,6,7) # visit_date变量中截取月份
user_action <- cbind(user_action,month) # user_action增加一列月份数据
ggplot(user_action,aes(as.numeric(behavior_type),col=factor(month)))+geom_histogram()+facet_grid(.~month)

在这里插入图片描述

library(recharts)
rel <- as.data.frame(table(temp$province))
provinces <- rel$Var1
x = c()
for(n in provinces){
x[length(x)+1] = nrow(subset(temp,(province==n)))
}
mapData <- data.frame(province=rel$Var1,
count=x, stringsAsFactors=F) # 设置地图信息
eMap(mapData, namevar=~province, datavar = ~count) #画出中国地图

在这里插入图片描述

验收效果展示与说明

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

测试演示命令汇总如下
在这里插入图片描述

在这里插入图片描述

以上是关键步骤汇总 参考:https://dblab.xmu.edu.cn/

Ubuntu 16.04 Linux空白模板(只含大数据软件在桌面,可以在VM虚拟机导入使用)
这个空白Linux虚拟机模板,在VM导入即可使用可以在此模板,
自己可以在这个空白Linux虚拟机模板从头开始搭建大数据课程实验案例:网站用户行为分析。
重磅:大数据课程实验案例:网站用户行为分析(免费共享)链接如下:
https://dblab.xmu.edu.cn/

空白Linux虚拟机模板(只含大数据压缩软件包)

在这里插入图片描述

下载好就到导入空白Linux虚拟机模板
在这里插入图片描述

找到下载好模板的路径选择如下文件打开

在这里插入图片描述

在这里插入图片描述

重命名Ubuntu16.04 qjp
在这里插入图片描述

导入完成如下
在这里插入图片描述

开机之后如下
在这里插入图片描述

有需要Linux空白模板请告知
完整实验环境对外不提供,仅供个人学习使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值