项目的主要流程:
1.构建数据仓库
(1)创建数据仓库
create database if not exists tmall ;
use tmall ;
创建数据仓库是基础,数据清洗才是最有挑战的地方,在数据清洗的时候,要对数据有足够的敏感性,才能做好数据清洗工作.
(2)创建原始数据表
create external table if not exits tmall.tmall20201125(uid string ,itme string ,price string ,pname string , number int ,pid string) row format delimited by '\t' stored as textFile location '/tmall/20201125';
可以通过desc来查看表的详细信息。
(3)加载数据到数据仓库
首先查看Hadoop上面有没有location ’/tmall/20201125‘,没有的话就创建
hadoop fs -ls /
hadoop fs -mkdir /tmall/20201125
上传文件到HDFS上
hadoop fs -put tmall-2020-1125.csv /tmall/20201125
hadoop fs -ls /tmall/2020/1125
这样数据就放到了Hive数据仓库中,接下来去验证数据结果。
(4)验证数据结果
这个就比较简单了,通过命令大概查看与原数据是否一致
1)统计总条数
select count(*) from tmall.tmall_20201125
查出来的结果与原数据进行比较,原数据的数量可以通过
wc -l tmall-20201125.csv
2)查看前三行
select * from tmall.tmall_20201125 limit 3;
2.数据清洗
数据清洗是一件很麻烦的事情,在本例中,只对uid和pid两个字段进行了清洗,主要思路是通过创建临时表来完成数据的清洗,这样会麻烦一些,但是可以更好的理解内部表和外部表的区别。优点是中间结果可以在HDFS文件系统上做一个临时的备份。
(1)创建临时表
create table if not exits tmall.tmall_20201125_uid_pid(uid string,pid string) row format delimited fields terminated by '\t' stored as textfile;
(2)数据清洗详细步骤
1)初步填充、检查结果
insert overwrite table tmall.tmall_20201125_uid_pid select uid , pid from tmall.tmall_20201125
验证结果的方式就是提取出来的数据从HDFS加载到本地
hadoop fs -get /user/hive/warehouse/tmall.db/tmall_20201125_uid_pid/00000_0
这样抽取的数据就加载到了本地,通过vi查看数据中的内容,发现有一些uid字段为空,像这样的数据我们称为噪声数据,现在的目的就是将这些噪声数据过滤掉。
2)初步清洗
通过抽取正则函数来实现:regexp_extract(string subject,string patten ,int index)