hive数据仓库建设

1、设计原生日志表

原生日志表用来存放上报的原始日志,数据经过清洗加工后会进入到各个日志表中。

1.1 创建数据库

#创建数据库
$hive>create database umeng_big11 ;

1.2 创建原生日志表

原生表使用分区表设计,分区字段为ym/d/hm,hive使用动态分区表,分区采用非严格模式,即所有分区都可以是动态分区。hive命令行终端打开显式表头设置:

#临时设置,只在当前回话有效
$hive>set hive.cli.print.header=true ;

永久配置hive-site.xml:

...
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
...

创建hive原生日志表raw_logs:

$hive>create table raw_logs
(
servertimems float ,
servertimestr string ,
clientip string ,
clienttimems bigint,
status int ,
log string
)
PARTITIONED BY (ym int, day int , hm int)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '#'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;

1.3 加载hdfs数据到hive原生表

$hive>use umeng_big11 ;
$hive>load data inpath '/user/centos/umeng/raw-logs/201805/24/1809' into table raw_logs partition(ym=201805 , day = 24 , hm = 1809) ;

2、自定义UDF函数完成数据清洗

2.1 介绍

将原生数据加载原生日志表后,将status码为200的记录查询出来进行清洗,将结果分别插入到5类日志子表中。供以后分析使用。

3、创建日志子表

3.1 准备sql语句

创建/home/centos/umeng/umeng_create_logs_ddl.sql文件,内容如下:

--使用指定库
use umeng_big11 ; --startuplogs
create table if not exists startuplogs
(
appChannel string ,
appId string ,
appPlatform string ,
appVersion string ,
brand string ,
carrier string ,
country string ,
createdAtMs bigint ,
deviceId string ,
deviceStyle string ,
ipAddress string ,
network string ,
osType string ,
province string ,
screenSize string ,
tenantId string
)
partitioned by (ym int ,day int , hm int)
stored as parquet ; --eventlogs
create table if not exists eventlogs
(
appChannel string ,
appId string ,
appPlatform string ,
appVersion string ,
createdAtMs bigint ,
deviceId string ,
deviceStyle string ,
eventDurationSecs bigint ,
eventId string ,
osType string ,
tenantId string
)
partitioned by (ym int ,day int , hm int)
stored as parquet ; --errorlogs
create table if not exists errorlogs
(
appChannel string ,
appId string ,
appPlatform string ,
appVersion string ,
createdAtMs bigint ,
deviceId string ,
deviceStyle string ,
errorBrief string ,
errorDetail string ,
osType string ,
tenantId string
)
partitioned by (ym int ,day int , hm int)
stored as parquet ; --usagelogs
create table if not exists usgaelogs
(
appChannel string ,
appId string ,
appPlatform string ,
appVersion string ,
createdAtMs bigint ,
deviceId string ,
deviceStyle string ,
osType string ,
singleDownloadTraffic bigint ,
singleUploadTraffic bigint ,
singleUseDurationSecs bigint ,
tenantId string
)
partitioned by (ym int ,day int , hm int)
stored as parquet ; --pagelogs
create table if not exists pagelogs
(
appChannel string ,
appId string ,
appPlatform string ,
appVersion string ,
createdAtMs bigint ,
deviceId string ,
deviceStyle string ,
nextPage string ,
osType string ,
pageId string ,
pageViewCntInSession int ,
stayDurationSecs bigint ,
tenantId string ,
visitIndex int
)
partitioned by (ym int ,day int , hm int)
stored as parquet ;

3.2 执行sql脚本

$hive>source /home/centos/umeng/umeng_create_logs_ddl.sql

hive数据仓库建设的更多相关文章

  1. Hive数据仓库工具安装

    一.Hive介绍 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单SQL查询功能,SQL语句转换为MapReduce任务进行运行. 优点是可以通过类S ...

  2. HIVE—数据仓库

    1. hive是什么? Hive是基于 Hadoop 的一个数据仓库工具: 1.       hive本身不提供数据存储功能,使用HDFS做数据存储: 2.       hive也不分布式计算框架,h ...

  3. 高速查询hive数据仓库表中的总条数

    Author: kwu 高速查询hive数据仓库中的条数.在查询hive表的条数,通常使用count(*).可是数据量大的时候,mr跑count(*)往往须要几分钟的时间. 1.传统方式获得总条数例如 ...

  4. Hive数据仓库你了解了吗

    在工作中我们经常使用的数据库,数据库一般存放的我们系统中常用的数据,一般为百万级别.如果数据量庞大,达到千万级.亿级又需要对他们进行关联运算,该怎么办呢? 前面我们已经介绍了HDFS和MapReduc ...

  5. hive数据仓库入门到实战及面试

    第一章.hive入门 一.hive入门手册 1.什么是数据仓库 1.1数据仓库概念 对历史数据变化的统计,从而支撑企业的决策.比如:某个商品最近一个月的销量,预判下个月应该销售多少,从而补充多少货源. ...

  6. 将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中

    学习内容:数据导入,要求将CSV格式或者EXCEL格式的文件导入到HIVE数据仓库中: ①hive建表:test1 create table test1 (InvoiceNo String, Stoc ...

  7. Hive数据仓库工具基本架构和入门部署详解

    @ 目录 概述 定义 本质 特点 Hive与Hadoop关系 Hive与关系型数据库区别 优缺点 其他说明 架构 组成部分 数据模型(Hive数据组织形式) Metastore(元数据) Compil ...

  8. Hive数据仓库

    Hive 是一个基于Hadoop分布式文件系统(HDFS)之上的数据仓库架构,同时依赖于MapReduce.适用于大数据集的批处理,而不适用于低延迟快速查询. Hive将用户的HiveQL语句转换为M ...

  9. Hive数据仓库笔记(一)

    Hive建表: CREATE TABLE records (year STRING,temperature INT, quality INT) ROW FORMAT DELIMITED FIELDS ...

随机推荐

  1. Luogu P1608 路径统计 最短路计数

    颓了...重边导致我乖乖用邻接矩阵.... 好吧就是个最短路计数....如果更新时d[v]==d[u]+w[i],就可以接起来,把两个加在一起.. 如果d[v]>d[u]+w[i],那么c[v] ...

  2. 处女座和小姐姐(三)(数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G 来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! ...

  3. 衡量DevOps成功的15个标准

    DevOps在你的组织中运行的如何?如果你需要帮忙衡量它运行的如何,我们准备了一些DevOps的关键指标来进行追踪.这些指标可以帮助理解你的团队过去做的如何. 定义DevOps对你的组织意味着什么 D ...

  4. iOS自动化测试的那些干货

    前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改. 大多数的iOS App(没有持续集成)迭代流程是这样的 也就是说,测试是发布之前的最后一道关卡.如果bug不能在测试中发现,那么bug就会抵 ...

  5. vue父子组件通信(prop)

    先定义子组件,注册prop接收父组件传递的值 <template> <div> <div>{{message}}(子组件)</div> </div ...

  6. 加解密---Java安全

    一.概述 1.JCA(Java Cryptography Architecture) 提供基本的加密框架(消息摘要.数字签名......) 2.JCE(Java Cryptography Extens ...

  7. 用LaTeX画树形结构

    用LaTeX画树形结构,比如:文件目录树形图,程序中函数调用关系图等. 找到的一个不错的资源: http://www.texample.net/tikz/examples/feature/trees/ ...

  8. (转) IP子网划分

    原文:http://blog.csdn.net/birdie_l/article/details/77994610  子网划分公式计算法 实例一 实例二 心算思路总结: B类公式算法举例: 总结:此表 ...

  9. (转)轻松应对IDC机房带宽突然暴涨问题

    原文:http://blog.51cto.com/oldboy/909696

  10. (转)Shell脚本之break,continue,和exit区别

    Linux脚本中的break continue exit return break结束并退出循环 continue在循环中不执行continue下面的代码,转而进入下一轮循环 exit退出脚本,常带一 ...