Hadoop大数据处理技术综合实验

实验任务

这篇博客是我们一个学期作业,记录在这里,只是方便我写作和一些解决过程的记录。具体实验步骤参考:http://dblab.xmu.edu.cn/post/7499/ 任务如下:

  1. 本地数据集上传到数据仓库Hive;
  2. Hive数据分析
  3. Hive、MySql、HBase数据互导;
  4. 利用Python/R进行数据可视化分析;
  5. 利用Apriori基于关联规则的购物篮分析。

本地数据集上传到数据仓库Hive

  • 实验数据的准备

    本实验提供了两个数据集,其中包括一个大规模数据集raw_user.csv(包含2000万条记录),和一个小数据集small_user.csv(只包含30万条记录)。我们的思路同链接一样,先用小一点数据集实验,后用大数据集进行最后的测试。数据集点击这里下载

[root@master lailai]# cd /usr/local/
[root@master lailai]# ls
[root@master local]# su lailai
[lailai@master local]# sudo mkdir bigdatacase#这里使用sudo语法来获取其他用户权限,默认root
[lailai@master bigdatacase]$ sudo chown -R lailai:lailai ./bigdatacase #通过chown改变文件的拥有者和群组,-R 处理指定目录以及其子目录下的所有文件
[lailai@master local]$ cd bigdatacase/

[lailai@master bigdatacase]$ mkdir dataset
[lailai@master bigdatacase]$ cd /home/lailai/

[lailai@master ~]$ unzip user.zip -d /usr/local/bigdatacase/dataset/#解压文件zip,-d<目录>:指定文件解压缩后所要存储的目录

运行结果如下:
这里写图片描述

[lailai@master dataset]$ head -5 raw_user.csv

这里写图片描述

  • 数据集的预处理

    • 删除文件第一行记录
    [lailai@master dataset]$ sed -i '1d' small_user.csv
    [lailai@master dataset]$ head -5 small_user.csv

    结果如下:
    这里写图片描述

    • 对字段进行预处理
      这里按照链接我们需要写一个shell脚本,其功能就是去掉每行读取的文件第四个字段,然后提取时间的前10个字符,srand()设置随机数种子,随机新增字段省份。
#!/bin/bash
#下面设置输入文件,把用户执行pre_deal.sh命令时提供的第一个参数作为输入文件名称
infile=$1
#下面设置输出文件,把用户执行pre_deal.sh命令时提供的第二个参数作为输出文件名称
outfile=$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

结果如下:
这里写图片描述

  • 导入数据库

    • 启动hdfs
      上传到hdfs目录。
    [root@master hadoop-2.6.0]# ./sbin/start-all.sh #这里由于我的hdfs是用root权限安装的,所以要切换到root用户,否则会显示权限不足
    [root@master hadoop-2.6.0]# hadoop fs -put /usr/local/bigdatacase/dataset/user_table.txt /bigdatacase/dataset
    [root@master hadoop-2.6.0]# hadoop fs -ls /bigdatacase/dataset

    结果如下:
    这里写图片描述

    • 在Hive上创建数据库
      首先启动mysql作为Hive元数据
      启动结果如下:

      [root@master hadoop-2.6.0]# service mysqld start
      [root@master apache-hive-2.3.0-bin]# ./bin/hive
      hive> create database dblab
      > ;
      hive> use dblab;
      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';#创建外部表,存储的数据在hdfs下'/bigdatacase/dataset’,即使把文件夹删除,此外部表数据结构还是存在的,我们只需再次创建此文件夹,就能导入数据。
      hive> select * from bigdata_user limit 10;

      这里写图片描述

Hive数据分析

首先我们先启动hadoop、mysql和hive。

  • 简单查询分析

    • 用聚合函数count()计算出表内有多少条行数据。当运行到这里时,我的hive出问题了,一直说内存不足,或者然后卡着不动。因为count会调用hadoop,当初我以为我的内存不够运行300000条数据,我就截取其中50条head -50 bigdata_user > test_user测试此语句,还是一样,由此可知我的hadoop集群有问题,然后我把集群格式化(此时记得删除子节点hadoop-tmp文件夹,不然没有datanode),便可导入成功。
    select count(distinct uid) from bigdata_user;

    这里写图片描述
    可以看到返回了300000条数据。

    • 我们可以加上distinct,查出某一列不重复的数据有多少条。
    select count(distinct uid) from bigdata_user;

    这里写图片描述

    • 查询不重复的数据有多少条
    select count(*) from (select uid,item_id,behavior_ty
  • 14
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Hadoop是一种用于海量数据处理技术,包括HDFS、MapReduce、Hive、Sqoop等相关技术和伪代码,其中的代码使用Python语言编写。这些技术和工具能够有效地处理大规模的数据,解决生物信息学、基因组学、统计和社交网络分析等领域的问题。在大数据预处理方面,可以参考MapReduce的代码示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [hadoop海量数据处理详解与项目实战](https://download.csdn.net/download/zh519080/9997903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [数据算法 Hadoop Spark大数据处理技巧 中文PDF](https://download.csdn.net/download/jessehua/10688195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [hadoop实训课数据清洗py脚本(MapReduce python代码,可执行文件脚本,使用方法)](https://download.csdn.net/download/weixin_47723732/85326611)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值