Hive学习 day03

今天,继续学习了Hive。首先,先是复习了之前学过的内容,然后学习了表-即分区又分桶、动态分区、系统函数+自定义UDF函数、压缩、文件存储格式-概念、文件存储格式-实操、存储和压缩的结合、调优、常见问题总结、网站日志分析。
总结一下:
1.分区表
分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。
2.把数据直接上传到分区目录上,让分区表和数据产生关联的三种方式
①方式一:上传数据后修复
②方式二:上传数据后添加分区
③方式三:上传数据后load数据到分区
3.查询
基本查询(SELECT…FROM)
注意:
(1)SQL语言大小写不敏感。
(2)SQL可以写在一行或者多行。
(3)关键字不能被缩写也不能分行。
(4)各子句一般要分行写。
(5)使用缩进提高语句的可读性。
4.LIKE和RLIKE
1)使用LIKE运算选择类似的值。
2)选择条件可以包含字符或数字:
%代表零个或多个字符(任意个字符)。
_代表一个字符。
3)RLIKE子句是Hive中这个功能的一个扩展,其可以通过Java的正则表达式这个更强大的语言来指定匹配条件。
5.分桶表数据存储
概念
分区针对的是数据的存储路径,分桶针对的是数据文件。
分区提供一个隔离数据和优化查询的便利方式。不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适的划分大小这个疑虑。
分桶是将数据集分解成更容易管理的若干部分的另一个技术。
方式一:先创建分桶表,通过直接导入数据文件的方式
方式二:创建分桶表时,数据通过子查询的方式导入
6.自定义函数描述
1)Hive 自带了一些函数,比如:max/min等,但是数量有限,当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。
2)根据用户自定义函数类别分为以下三种:(1)UDF(User-Defined-Function)
一进一出
(2)UDAF(User-Defined Aggregation Function)
聚集函数,多进一出
例如:count/max/min
(3)UDTF(User-Defined Table-Generating Functions)
一进多出
例如: lateral view explore()
7.文件存储格式
Hive支持的存储数的格式主要有:TEXTFILE (textfile)、SEQUENCEFILE(sequencefile)、ORC(orc)、PARQUET(parquet)。
8.行存储的特点
查询满足条件的一整行数据的时候,列存储则需要去每个聚集的字段找到对应的每个列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询的速度更快。
9.列存储的特点
因为每个字段的数据聚集存储,在查询只需要少数几个字段的时候,能大大减少读取的数据量;每个字段的数据类型一定是相同的,列式存储可以针对性的设计更好的设计压缩算法。
提示:
TEXTFILE(TextFile)和SEQUENCEFILE(SequenceFile)的存储格式都是基于行存储的;
ORC(Orc)和PARQUET(Parquet)是基于列式存储的。

猜你喜欢

转载自blog.csdn.net/m0_49528461/article/details/108721368
今日推荐