hive数据仓库建设

1、设计原生日志表

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

1.1 创建数据库

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

1.2 创建原生日志表

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

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

永久配置hive-site.xml:

  1. ...
  2. <property>
  3. <name>hive.cli.print.header</name>
  4. <value>true</value>
  5. </property>
  6. ...

创建hive原生日志表raw_logs:

  1. $hive>create table raw_logs
  2. (
  3. servertimems float ,
  4. servertimestr string ,
  5. clientip string ,
  6. clienttimems bigint,
  7. status int ,
  8. log string
  9. )
  10. PARTITIONED BY (ym int, day int , hm int)
  11. ROW FORMAT DELIMITED
  12. FIELDS TERMINATED BY '#'
  13. LINES TERMINATED BY '\n'
  14. STORED AS TEXTFILE;

1.3 加载hdfs数据到hive原生表

  1. $hive>use umeng_big11 ;
  2. $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文件,内容如下:

  1. --使用指定库
  2. use umeng_big11 ;
  3. --startuplogs
  4. create table if not exists startuplogs
  5. (
  6. appChannel string ,
  7. appId string ,
  8. appPlatform string ,
  9. appVersion string ,
  10. brand string ,
  11. carrier string ,
  12. country string ,
  13. createdAtMs bigint ,
  14. deviceId string ,
  15. deviceStyle string ,
  16. ipAddress string ,
  17. network string ,
  18. osType string ,
  19. province string ,
  20. screenSize string ,
  21. tenantId string
  22. )
  23. partitioned by (ym int ,day int , hm int)
  24. stored as parquet ;
  25. --eventlogs
  26. create table if not exists eventlogs
  27. (
  28. appChannel string ,
  29. appId string ,
  30. appPlatform string ,
  31. appVersion string ,
  32. createdAtMs bigint ,
  33. deviceId string ,
  34. deviceStyle string ,
  35. eventDurationSecs bigint ,
  36. eventId string ,
  37. osType string ,
  38. tenantId string
  39. )
  40. partitioned by (ym int ,day int , hm int)
  41. stored as parquet ;
  42. --errorlogs
  43. create table if not exists errorlogs
  44. (
  45. appChannel string ,
  46. appId string ,
  47. appPlatform string ,
  48. appVersion string ,
  49. createdAtMs bigint ,
  50. deviceId string ,
  51. deviceStyle string ,
  52. errorBrief string ,
  53. errorDetail string ,
  54. osType string ,
  55. tenantId string
  56. )
  57. partitioned by (ym int ,day int , hm int)
  58. stored as parquet ;
  59. --usagelogs
  60. create table if not exists usgaelogs
  61. (
  62. appChannel string ,
  63. appId string ,
  64. appPlatform string ,
  65. appVersion string ,
  66. createdAtMs bigint ,
  67. deviceId string ,
  68. deviceStyle string ,
  69. osType string ,
  70. singleDownloadTraffic bigint ,
  71. singleUploadTraffic bigint ,
  72. singleUseDurationSecs bigint ,
  73. tenantId string
  74. )
  75. partitioned by (ym int ,day int , hm int)
  76. stored as parquet ;
  77. --pagelogs
  78. create table if not exists pagelogs
  79. (
  80. appChannel string ,
  81. appId string ,
  82. appPlatform string ,
  83. appVersion string ,
  84. createdAtMs bigint ,
  85. deviceId string ,
  86. deviceStyle string ,
  87. nextPage string ,
  88. osType string ,
  89. pageId string ,
  90. pageViewCntInSession int ,
  91. stayDurationSecs bigint ,
  92. tenantId string ,
  93. visitIndex int
  94. )
  95. partitioned by (ym int ,day int , hm int)
  96. stored as parquet ;

3.2 执行sql脚本

  1. $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. I2C(smbus pmbus)和SPI分析

    2C和SPI作为两种非常常用的低速外部总线 I2C I2C是以前的飞利浦半导体制定的标准,也就是如今的NXP. I2C总线由一条数据线(SDA)和一条时钟线(SCL)组成.设备分主从,主设备提供时钟, ...

  2. Java中的两个类:Desktop和SystemTray

    在JDK6中 ,AWT新增加了两个类:Desktop和SystemTray,前者可以用来打开系统默认浏览器浏览指定的URL,打开系统默认邮件客户端给指定的邮箱发邮件,用默认应用程序打开或编辑文件(比如 ...

  3. hive 全表全字段对比

    select * from ( select max(t1.source) as source ,t1.c1 ,t1.c2 ,t1.c3 ,count(*) as cnt from ( as sour ...

  4. Autel MaxiSys MS908CV Diagnostic System for Commercial Vehicles

    As a new member of Autel’s MaxiSys family, the MaxiSys CV is built on the powerful MaxiSys 908 platf ...

  5. CSS background 属性全家桶

    介绍我们都知道css的background属性是一个复合属性,可以简写成一行代码,也可以将每个属性分开来写. background 简写属性在一个声明中设置所有的背景属性.如:body{ backgr ...

  6. 下载,安装oracle数据库以及navicat连接数据库

    一.学习时所遇问题: 1.在下载之前以为oracle不是免费的,但是后来才知道oracle对于个人学习时是免费的,可以到官网下载安装.在下载时由于要注册oracle官网,所以尝试了好几遍,才成功下载o ...

  7. 04-spring中的aop演示

    1 xml配置 1 导包 2 准备对象 package www.test.service; public interface UserService { public abstract void ad ...

  8. Spring Aware

    spring依赖注入的最大亮点就是所有的bean感知不到spring容器的存在,但在实际开发中,我们不可避免的要用到spring容器本身的功能资源,这时,我们就必须意识到容器的存在(废话,都要跟容器进 ...

  9. this.options[selectedIndex]的使用

    <select id="sel" onchange="javascript:getSelect();"> <option value=&quo ...

  10. 分布式数据库sort那些事儿

    待填. 收回之前的填坑时间. 计划永远没有变化快,所有周末都奉献上还是有干不完的活,待闲时再来填..