`

hive认知1

    博客分类:
  • hive
 
阅读更多

 

 

  工作中,有些时候总感觉对某个概念,某项技术理解的不够深,理解的不到位,其实是自己站的高度不够高。在考虑技术细节和业务结合使用时,也要多想想设计的初衷,多想想为什么,收获颇丰

 

 

 

 


一.认识hive
hive一个数据仓库工具,不同于数据库。数据仓库注重于数据分析(OLAP)和历史数据存储,面向主题,而数据库则是面向事务(OLTP),存储
在线交易数据,数据库设计尽量避免冗余,而数据仓库的设计有意引入冗余。


1.面向主题和面向事务
  面向主题简单理解是面向某一类信息,面向事务偏重的数据的完整性。如:
  商品id,商品名称,商品价格,交易时间,交易数量,交易金额。
  在这样的一条交易数据中,面向事务侧重整条交易数据的完整性,而在面向主题的概览中,将信息按主题分类:
  商品类:
     商品id
     商品名称
     商品价格
  交易类:
     交易时间
     交易数量
     交易金额
2.关于冗余数据
  如下的数据库设计是为了避免冗余:
  有一个学生班主任表字段如下(班主任和学生的关系是1:N)
  学生ID  学生姓名  班主任ID 班主任姓名 班主任家庭住址
  那么这里,我们每插入一条学生记录,都必须要插入一次班主任的姓名和家庭住址信息,这就是典型的数据冗余。
  这样的冗余带来的麻烦就是:
  1。班主任姓名和住址要多次插入同样数据,存在插入错误的危险。
  2。班主任搬家了。。。那么要更新班主任家庭住址N次~
  为避免冗余:
  表拆分为
  学生班主任表
  学生ID 学生姓名 班主任ID
  班主任表
  班主任ID 班主任姓名 班主任住址
  但是在数据仓库中,设计冗余的目的是以空间换时间,减少关联的开销和提高数据读取的速度
  
二.关于hive数据类型的思考
   hive数据类型分两大类:一是基本数据类型,二是负载类型。
   基本有如tinyint,smallint,int.....(不列举全部),在大部分情况下,设计数据表的时候,都能够正常完成。但是却少有考虑数据类型
   对查询性能的影响。比如在定义“员工信息”表时,将员工年龄定义为int类型,并没有任何语法语义错误。但是从查询性能上来考量有瑕疵,这是因为采用int类型存储数据占用的数据表空间比用smallint或tinyint存储占用空间更大,查询时要消耗更多的磁盘IO,在数据集很大的时候,会对查询性能有一定的影响。另外如果hive对某列建立索引,该列的值越短越好,这样可以 提高查询性能,对索引处理会更快。
   
   
三.hive三观


   树立这些观念有助于更好的利用hive的特点和优势。
   1.数据仓库观
     hive是数据仓库工具,数据仓库与数据库密不可分,不关注细节。我们可以偏见地像对待数据库一样简单粗暴地对待hive。
     在hive里我们可以像操作数据库一样来操作它。
     1-1.常见的数据模型操作(SQL):数据库,表,视图,索引,分区,桶
     1-2.访问方式:Client(JAVA APT通过thrift server访问),cli(命令行),web ui(直观方便)。
     1-3.内置的操作符和函数。
     1-4.hive数据文件的存放及元数据信息的管理
   2.MapReduce观
     2-1.绝大多数hiveQL都是别转换成MR执行的,因此要树立的一种观念是HQL就是MR,在进行Hive调优的时候,很多时候其实都是对MR调优。比如要考虑数据倾斜问题会对MR造成的影响。基于MR的特性,我们可以预见的是hive适合处理大数据量的离线分析,
     而且是冷数据(只读不写)。具有高延迟的特点,不适合低延迟快速响应的场合。
     2-2.hive的元数据是和很多hadoop组件共享的,比如和impala,Hbase共享元数据。对hive数据的操作同样会影响其他组件的数据。
   3.高扩展性观
     有些时候,hive自带的函数不能满足实际开发需求,我们可以通过自定义UDF来扩展hive的功能,还可以通过改动一些底层
     源码来实现想要的功能。而这些改动都是基于Java,所以改动的成本低,易于编程。类似于ETL工具Sqoop。比如自定义输入输出格式化处理,自定义分隔符处理程序,自定义业务逻辑处理过程等等,这极大的丰富和扩展了hive的功能

分享到:
评论

相关推荐

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    Hive使用手册Hive使用手册

    1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 3 Hive创建/删除数据库 3 3.1创建数据库: 3 3.2 删除数据库: 3 4 Hive 表相关语句 3 4.1 Hive ...

    hive-jdbc hive jdbc驱动

    hive-jdbc

    Hive表生成工具,Hive表生成工具Hive表生成工具

    Hive表生成工具,Hive表生成工具Hive表生成工具

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf

    《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第5章 Hive数据操作.pdf《Hive数据仓库案例教程》教学课件 第...

    hivesql语句练习

    1.Hive交互shell bin/hive 2.Hive JDBC服务(参考java jdbc连接mysql) 3.hive启动为一个服务器,来对外提供服务 bin/hiveserver2 nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver....

    hive-3.1.1安装包

    Hive是一个基于Hadoop的数据仓库工具,它本身并不存储数据,部署在Hadoop集群上,数据是存储在HDFS上的. Hive所建的表在HDFS上对应的是一个文件夹,表的内容对应的是一个文件。它不仅可以存储大量的数据而且可以对...

    Hive.sql,hive的元数据

    Hive.sql

    Hive新手学习资料之Hive入门与实战.+Hive用户手册+hive函数大全中文版资源合集

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储...

    Hive总结.docx

    Hive原理/Hive SQL/Hive 函数/数据仓库分层和建模/Hive sql优化/数据倾斜

    Ambari下Hive3.0升级到Hive4.0

    Ambari下Hive3.0升级到Hive4.0,验证自测;

    利用Hive进行复杂用户行为大数据分析及优化案例

    利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) ...

    hive1_2_1jars.zip

    spark3读hive1,配置spark.sql.hive.metastore.jars

    Hive资料整理集合1

    HIVE在腾讯分布式数据仓库实践分享 赵伟.pdf Hap数据仓库工具--hive介绍.docx The Hive An The Hney Bee Langstrth.pdf bigtable,hive,pig.pdf HIVE优化以及执行原理.pdf hive实现原理-weib.pdf 【Hive】Hap Data ...

    Hive优化方法整理

    Hive优化方法整理 hive 数据倾斜 内连接

    hive学习总结 思维导图.xmind

    由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive ...

    hive介绍和hive环境搭建

    hive介绍和hive环境搭建。。一、 安装mysql 1. 使用root用户: su root 2. 安装 yum install mysql yum install mysql-server yum install mysql-devel(可选) 3. 修改配置信息,添加: vim /etc/my.cnf ...

    hive构造测试数据方法

    hive造数据

Global site tag (gtag.js) - Google Analytics