电商实战
原理解析
省流量统计
1.输入:一个包含日志信息的文本文件,其中每条记录包含一个IP地址。
2.Mapper阶段:解析每条日志记录,提取IP地址,并通过IP地址获取对应的省份信息,然后输出键值对(省份,1)。
3.Reducer阶段:接收Mapper输出的键值对,统计每个省份的访问次数,然后输出结果。
整个过程实现了从日志文件中提取IP地址,转换为地理位置,并统计每个省份的访问次数。
关键信息提取
1.Mapper阶段
输入:读取日志文件中的每一行记录,通常每行包含一次访问的详细信息。
LogParser:初始化日志解析器,用于解析每行日志记录,将其转换为一个包含多个字段的键值对映射。
解析与处理:
从解析后的日志信息中提取IP地址、URL、国家、省份、城市和访问时间。
通过URL获取页面ID。
将这些提取的关键信息拼接成一个逗号分隔的字符串。
输出:将URL作为键(key),拼接后的关键信息字符串作为值(value)输出。这意味着每个URL会对应一组相关的访问信息。
2.Reducer阶段
输入:接收Mapper输出的键值对,键是URL,值是对应的关键信息字符串。
处理:对于每个URL,将所有相关的关键信息逐个输出,没有进行复杂的合并或统计操作。
输出:将URL和对应的关键信息字符串输出到最终结果文件中。
使用hive编程
搭建hive环境
hive的下载、安装、配置
启动:hive是建立在hdfs之上的,先启动hdfs,再启动hive
进入hive客户端,或者访问web界面,端口10002
运行sql并测试
编写代码
使用 hive 只需编写sql
创建三张表
日志信息表:日志的原始字段
ip映射表:一个ip对应的国家、省份、城市
结果表:关联上面两张表,映射最终结果
show databases ;
use test;
-- 创建日志信息表
describe trackinfo;
drop table if exists trackinfo;
create table trackInfo(
id string,
url string,
sessionId string,
ip string,
`time` string
)row format delimited fields terminated by ',';
load data local inpath "/root/SX_data/trackInfo.txt" overwrite into table trackinfo;
-- 创建ip映射信息表
drop table if exists ipInfo;
create table ipInfo(
ip string,
country string,
province string,
city string
)row format delimited fields terminated by ',';
load data local inpath "/root/SX_data/ipInfo.txt" overwrite into table ipInfo;
-- 创建结果信息表
truncate table track_log;
create table track_log(
url string,
pageId string,
ip string,
country string,
province string,
city string
)row format delimited fields terminated by ',';
insert into track_log
select
url,
regexp_extract(url,'topicId=(\\d{5})') as pageId,
t.ip,
i.country,
i.province,
i.city
from trackinfo t
left join ipinfo i
on t.ip = i.ip
;
-- 查询省份浏览量
select
province,
count(*)
from track_log
group by province;
select
url,
regexp_extract(url,'topicId=(\\d{5})') as pageId
from trackinfo t
where id = '20960991758'
;
select regexp_extract("http://www.yihaodian.com/cms/view.do?topicId=18970dgf",'topicId=(\\d{5})')
结果展示