Hive学习之四 《Hive分区表场景案例应用案例,企业日志加载》 详解

2023-02-15,,,,

文件的加载,只需要三步就够了,废话不多说,来直接的吧。

一、建表

话不多说,直接开始。

建表,对于日志文件来说,最后有分区,在此案例中,对年月日和小时进行了分区。

建表tracktest_log,分隔符为“\t”部分:

在hive的default库中,建表,建表语句为:

 create table tracktest_log (
id string ,
url string ,
referer string ,
keyword string ,
type string ,
guid string ,
pageId string ,
moduleId string ,
linkId string ,
attachedInfo string ,
sessionId string ,
trackerU string ,
trackerType string ,
ip string ,
trackerSrc string ,
cookie string ,
orderCode string ,
trackTime string ,
endUserId string ,
firstLink string ,
sessionViewNo string ,
productId string ,
curMerchantId string ,
provinceId string ,
cityId string ,
fee string ,
edmActivity string ,
edmEmail string ,
edmJobId string ,
ieVersion string ,
platform string ,
internalKeyword string ,
resultSum string ,
currentPage string ,
linkPosition string ,
buttonPosition string) PARTITIONED BY (ds string,hour string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

建表语句

全表默认字符类型为string,分区为ds和hour。

如下图所示:

desc tracktest_log;查看表结构。

看到分区结构如下图,分区信息为ds和hour。

二、load,加载企业日志文件

  load语法: 

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE]
INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]

  Insert方式有两种,一种是append(追加),一种是overwrite(覆盖),其中覆盖应该最广。在此案例中,采用overwrite方式。

  在虚拟机中,创建一个存放日志的文件。

  指令如下所示(在opt目录下,创建一个存放日志的date文件夹):

cd /opt
mkdir /litong
cd /litong
mkdir date

  上传日志文件,load语句。

LOAD DATA LOCAL INPATH '/opt/litong/data/2015082818' overwrite INTO TABLE tracktest_log PARTITION (ds='2015-08-28',hour='18');
LOAD DATA LOCAL INPATH '/opt/litong/data/2015082819' overwrite INTO TABLE tracktest_log PARTITION (ds='2015-08-28',hour='19');

  

去检测是否load成功。因为验证的问题特别多,所以只取5行。

select * from tracktest_log limit 5;

三、Hive的存储

  1、hadoop查看表,在每个分区下,又有一个子目录,详细看下面两个图。

从图中可以看到,hour=18和hour=19.

  2、把hive查询的数据落地到HDFS或hive其他表

   ①新建一个数据库,并指定存储路径。

create database rptest location  '/user/hive/warehouse/rptest';

  ②在创建的rptest中,新建表visit_daily。

create table visit_daily
(pv bigint,
uv bigint
)partitioned by(ds string);

  ③查询数据并插入新建的表中

insert overwrite table visit_daily partition (ds='2015-08-28')
select
count(url) pv ,
count(distinct guid) uv
from default.tracktest_log where ds='2015-08-28';

  ④查询结果,如下图。

  

Hive学习之四 《Hive分区表场景案例应用案例,企业日志加载》 详解的相关教程结束。

《Hive学习之四 《Hive分区表场景案例应用案例,企业日志加载》 详解.doc》

下载本文的Word格式文档,以方便收藏与打印。