1.在实验前开启Hadoop集群
master:start-dfs.sh
slave1: satart-yarn.sh
注:namenode出现安全模式解决办法 hdfs dfsadmin -safemode leave
2.数据准备
将实验所有数据导入虚拟机中。
推荐路径
历史微博数据:/root/data/weibo
用户注册数据:/root/data/user
3.将存放历史微博数据合并
cd/root/data/weibo
4.创建实验所需要用到的数据库:
create database 数据库名;
use 数据库;
5.数据清洗sed -e 's/.//' -e 's/.$//' weibo.json > weibo2.json
历史微博数据并不是标准完整的json格式,两边各多了一个中括号,需要处理掉。
6.数据处理在hive中
1、创建ods表存储原始数据表 create table ods_weibo_data;
2、上传加载原始数据路径 load data local inpath "/root/data/weibo/weibo2.json" into table ods_weibo_data;
3、检测查询加载的数据是否存在 select * from ods_weibo_data;
7.原始数据 json txt
Hive 建表 ods_user 字段data
Load local
清洗后的数据放在dwd层。逻辑数据放在dws层。
应用数据放在ads层。
注.出现reduce问题 关注yarn出现临时关闭
8.表命名规则
数仓层级_数据源_一级处理_二级处理
例如:
原始用户登录数据:ods_login_user
原始未改的微博数据:ods_weibo_original
清洗之后的微博数据:dwd_weibo_clean
微博用户总数量数据:dws_weibo_user_num
9.统计微博数量。
select count(*)
from(
select weiboId
from dwd_weibo_data
group by weiboId
) temp;
注:group by 将weibo数量分组
10.统计用户数量。
select count(*)
from(
select userId
from dwd_weibo_data
group by userId
) temp;
10.在idea中实现udf 导出jar包到虚拟机中
11.创建l临时文件关联写的类 create temporary function iphonenum as 'nmd.aaa.aaa.muduf';
12.在虚拟机中统计需要的数据
统计出现”iphone”次数最多TOP10的用户。
create table dws_weibo_user_iphonenums
as
select userId,sum(iphonenum(content)) total
from dwd_weibo_data
group by userId
order by total
Desc limit10;
13.将整理的文件到处MySQL中,通过MySQL清晰可见
总结:在做项目时,可能出现虚拟机里内存全部使用的问题,导致无法完成下一部,通过df查询虚拟机内存,方法解决,出现内存满可以扩容。



