栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据之Hive基础一

大数据之Hive基础一

hive框架:

1.Hive的特点:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能.可以将sql语句转化为mapreduce任务进行运行.其优点是学习成本低,可以通过类SQL语句快速实现简单的mapreduce统计,不必开发专门的Mapreduce应用,十分适合数据仓库的统计分析,但是Hive不支持实时查询.

2.Hive框架

3.Hive-SQL转化为MapReduce的过程

 HSQL->AST抽象语法树->QB查询块->OpreateTree操作树->优化后的操作树->MapReduce任务树->优化后的MapReduce任务树

4.hive与mysql最主要区别
                mysql      hive
                数据量大    小         大 
                速度   小增删改查   大数据量的查询

(1)数据格式:hive数据格式可以用户自定义,mysql有自己的系统定义格式;
(2)数据规模:hive存储的数据量超级大,而mysql只是存储一些少量的业务数据;
(3)数据存储位置:Hive 存储在 HDFS 。数据库将数据保存在块设备或者本地文件系统中。
(4)数据更新 :Hive 中不建议对数据的改写。而数据库中的数据通常是需要经常进行修改的

5.hive内部表和外部表区别
        元数据  原始数据
        删除数据: 
                内部表  删除 元数据 +原始数据
                外部表  只删除元数据
        在生产环境,  只有自己使用的临时表,是内部表        

6. 4个by的区别

order by =>全局排序,只有一个Reduce,在生产环境中Order By不常用,容易导致OOM,一般采用distrubute by(分区)+sort by(排序)

sort by =>分区内有序,不是全局排序,其在数据进入Reduce之前完成排序(sort by是局部排序。相比order  by的懒惰糊涂,sort by正好相反,它不但非常勤快,而且具备分身功能。sort by会根据数据量的大小启动一到多个reducer来干活,并且,它会在进入reduce之前为每个reducer都产生一个排序文件。这样的好处是提高了全局排序的效率。)

distrbute by =>按照指定的字段对数据进行划分输出到不同的reduce中,类似于MR的partition进行分区,结合sort by使用

cluster by =>当distrbute by和sort by字段相同时,可以使用cluster by方式.cluster by除了具有distrbute by功能外还兼具sort by功能,但其排序只能是升序.

举例分析:

在根据年份和气温对气象数据进行排序时,我们希望看到同一年的数据被放到同一个reducer中去处理,因为distribute  by  通常和sort  by 一起用,所以当distribute by 遇上 sort by时,distribute by要放在前面,这个不难理解,因为要先通过distribute by 将待处理的数据从map端做分发,这样,sort by 这个擅长局部排序的才能去放开的干活。不然要是没有distribute  by的分发,那么sort  by 将要处理全部的数据,即全局排序,这不是sort  by的活,这样做只能拖慢集群工作效率。

Select year,temperature from table distribute by year,
sort by year ASC,temperature DESC;

对于cluster by的话,如果 distribute by中和sort by 中所用的列相同的话,可以缩写为cluster by以便同时指定两者所用的列

Select year,temperature from table cluster by year;

7.hive中常见文本格式介绍

类型介绍
TextFileHive默认的文件格式,最简单的数据格式,数据不做压缩,开销大,便于查看和编辑,耗费存储空间,I/O性能较低.存储方式-行存储
SequenceFile含有键值对的二进制文件,优化磁盘利用率和I/O,并行操作数据,查询效率高,但存储空间消耗最大.存储方式-行存储
AvroFile特殊的二进制文件,设计的主要目标是为了满足schema evolution,Schema和数据保存在一起
OrcFile列式存储,Schema存储在footer中,不支持schema evolution,高度压缩比并包含索引,查询速度非常快,存储方式-列存储
ParquetFile列式存储,与Orc类似,压缩比不如Orc,但是查询性能接近,支持的工具更多,通用性更强

 

根据性能测试总结
从存储文件的压缩比来看,ORC和Parquet文件格式占用的空间相对而言要小得多。
从存储文件的查询速度看,当表数据量较大时Parquet文件格式查询耗时相对而言要小得多。
实际情况

根据目前主流的做法来看,Hive中选用ORC和Parquet文件格式似乎更好一点,但是为什么Hive默认的文件存储格式是TextFile?
这是因为大多数情况下源数据文件都是以text文件格式保存(便于查看验数和防止乱码),这样TextFile文件格式的Hive表能直接load data数据。
如果说我们想使用ORC文件或者Parquet文件格式的表数据,可以先通过TextFile表加载后再insert到指定文件存储格式的表中。而这些不同文件格式的表我们可以通过数据分层保存,便于后期进行数据统计。

8.hive中的自定义函数

  UDF     解析字段  一进一出  一行进 一行出
  UDTF    解析字段  一进多出  flatmap/行转列explore()

  UDAF    解析字段  多进一出  count/max/min


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/722397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号