Hive学习之四 《Hive分区表场景案例应用案例,企业日志加载》 详解
文件的加载,只需要三步就够了,废话不多说,来直接的吧。
一、建表
话不多说,直接开始。
建表,对于日志文件来说,最后有分区,在此案例中,对年月日和小时进行了分区。
建表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分区表场景案例应用案例,企业日志加载》 详解的更多相关文章
- prelaod场景,用来显示资源加载进度
phaser.js的源码可以到它在github上的托管里去下载,游戏要用到的图片声音等素材资源请点击这里下载.Phaser的使用非常简单,只需要引入它的主文件,然后在页面中指定一个用来放置canvas ...
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- Shell学习(七)——sort、uniq、cut、wc命令详解
Shell学习(七)--sort.uniq.cut.wc命令详解 转自:[1]linux sort,uniq,cut,wc命令详解 https://www.cnblogs.com/ggjucheng/ ...
- hive学习(三) hive的分区
1.Hive 分区partition 必须在表定义时指定对应的partition字段 a.单分区建表语句: create table day_table (id int, content string ...
- hive学习(二) hive操作
hive ddl 操作官方手册https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL hive dml 操作官方手 ...
- Hive学习:Hive连接JOIN用例详解
1 准备数据: 1.1 t_1 01 张三 02 李四 03 王五 04 马六 05 小七 06 二狗 1.2 t_2 01 11 03 33 04 44 06 66 07 77 08 88 1.3 ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件
一 .webpack学习环境准备: 1:window系统 2:安装node.js 官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...
随机推荐
- 非主窗体在任务栏显示按钮(简单好用)good
非主窗体在任务栏显示按钮 type TForm2 = class(TForm) private { Private declarations } public { Public declaration ...
- Struts2之ajax初析
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单, ...
- 1.AJAX简介
没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,比如实现显示服务器时间.每次都要刷新页面的坏处:页面刷新打断用户操作.速度慢.增加服务器的流量压力.如果没有AJAX ...
- PlatformTransactionManager
Spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactio ...
- javascript(js)中的substring和substr方法
1. substring 方法 定义和用法: substring 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(start,end) 参数 ...
- POJ 3208 Apocalypse Someday
题意: 将含有连续的三个6的数称为不吉利数,比如666,1666,6662,但是6266吉利.则666为第一个不吉利数,输入整数n,求第n个不吉利数.(n <= 5*10^7) 解法: 如果是给 ...
- Spring和Struct整合的三个方法
1.使用Spring 的 ActionSupport .2.使用Spring 的 DelegatingRequestProcessor 类.3.全权委托. 无论用那种方法来整合第一步就是要为strut ...
- 3rd day
今天学习创建了几个简单的表:
- Excel导入mysql数据库
步骤一:选取要导入的数据快儿,另外要多出一列,如下图: 步骤二: 将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” ->“文本文件(制表符分割)(*.txt)”,假如存到“D: ...
- PHP学习之[第08讲]数据库MySQL基础之增删改查
一.工具: 1.phpMyAdmin (http://www.phpmyadmin.net/) 2.Navicat (http://www.navicat.com/) 3.MySQL GUI Tool ...