Hive
文章平均质量分 91
一位小白的学习记录,如若有不正确的地方,希望大家能够指正俺,谢谢大家(●‘◡‘●)
摇篮里的小樱桃
菜鸟,加油!
展开
-
Hive 优化
reduce要拉取属于自己分区的数据,在环形缓冲区中会进行分区,第一个reduce task会比第二个reduce task拉取的数据多,而在第一个reduce task拉取数据的时候,第二个reduce task可能已经把数据拉取完了,且执行完了15次加一的操作,这就造成了数据倾斜。开启mapjoin后,会把小表放到maptask所在节点,运行的时候会加载到内存中,读取的时候是读取大表的数据,在map阶段进行join,没有reduce,避免了shuffle和频繁大量溢写磁盘,节省时间提高效率。原创 2023-12-16 21:14:02 · 59 阅读 · 1 评论 -
Hive 安装
使用mysql做元数据的存储,使用metastore服务做元数据的管理,优点便于元数据库信息的保密,因为只需要在运行metastore的机器上配置元数据库连接信息,客户端只需要配置metastore连接信息即可,缺点会引发单点问题,例如metastore服务挂了,其他hive终端就获取不到元数据信息了。了metastore服务,可以直接连接mysql数据库,但是若连接过多会造成mysql数据库压力过大(一般练习时可以用),另外对于metastore服务来说不安全,因为所有的配置信息在配置文件中都能看到。原创 2023-12-12 10:50:37 · 41 阅读 · 0 评论 -
Hive 数据类型、操作符、聚合函数
数据由逗号(,)分隔;解析json字符串json_string,可以指定多个json数据中的key,返回对应的value,如果输入的json字符串无效,那么返回Null。count(1) count(*) 是包含null值,count(字段)不包含null值,count(1)稍微比count(*)快一点。Hive中的Date只支持YYYY-MM-DD格式的日期,其余写法都是错误的,如需带上时分秒,请使用timestamp。char是固定长度的,最大长度255,且尾部的空格不影响字符串的比较。原创 2023-12-10 21:59:48 · 106 阅读 · 0 评论 -
Hive数仓工具
需要将执行计划提交给ResourceManager,就相当于走了Yarn的Job的提交流程,即当向Yarn上提交一个任务的时候,首先会创建一个ApplicationMaster用于管理这个任务,再进行任务的初始化,发现有多少个MapTask,有多少个ReduceTask,然后分别在NodeManager上进行启动,并且监控,运行完后ApplicationMaster就结束了,将结果进行返回,最后返回到客户端,打印到屏幕上。Shuffle流程可控不多,就会造成HQL调优困难。原创 2023-12-08 21:41:23 · 58 阅读 · 0 评论 -
Hive表SQL操作
Hive默认是静态分区,在插入数据的时候要手动设置分区,如果源数据量很大的时候,那么针对一个分区就要写一个insert,比如有很多日志数据,要按日期作为分区字段,在插入数据的时候手动去添加分区太麻烦。(1)Hive的数据加载不会对本地数据文件做任何处理,只是将文件或目录中的所有文件拷贝到表定义的数据目录,分桶表使用load加载数据会生成mapreduce任务,将数据分到多个桶文件进行存放。(5)如果指定overwrite会覆盖相应表数据或分区数据,相当于rm原有目录数据,然后上传新数据文件。原创 2023-12-07 23:17:30 · 116 阅读 · 0 评论 -
Hive 文件存储格式
方便HDFS进行读取更加高效,HDFS的block块设置为256MB,256MB就会对应一个切片,就对应一个map task线程进行处理,一个线程就可以把一个stripe里面的数据进行读取。这种文件格式可以提供一种高效的方法存储Hive数据,其设计目标是用于克服Hive其他格式的缺陷,运用ORC File可以提高Hive的读、写、及处理数据的性能。: 按行存储,不支持块压缩,默认格式,不支持压缩,磁盘开销大,加载数据的速度最高。(包含键值对的二进制的文件存储格式,支持压缩,可以节省存储空间)原创 2023-12-06 21:01:14 · 469 阅读 · 0 评论 -
Hive DDL(表、库的操作,表分类,内部表,外部表,分区表,分桶表)
上,内部表是在hive.metastore.warehouse.dir(默认: /user/hive/warehouse),而外部表是由自己制定(如果没有location,hive将在HDFS上的/usr/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放到这里)。操作,内部表会将数据移动到hive指向的路径,外部表仅记录数据所在的路径,不对数据的位置做任何改变。注:普通表(外部表,内部表)、分区表这三个都是对应HDFS上的目录,分桶表对应是目录里的文件。原创 2023-12-05 22:26:53 · 104 阅读 · 0 评论 -
Hive中如何实现行转列、列转行?
提到了UDTF的两种使用方式,第一种是直接select后面使用,但不支持嵌套使用、不支持和其他字段一起使用、不支持和分组、排序一起使用;第二种是和lateral view一起使用(其本质是将udtf后的结果看成一张虚拟表,再和其他表的字段拼在一起使用,可以解决单独用udtf函数时不能实现的情况)。lateral view 侧写函数: 配合split,explode等UDTF函数一起使用,能够将一列数据拆成多行数据,并且对拆分后的结果进行聚合,即将多行结果组合成一个支持别名的虚拟表。原创 2023-12-04 13:30:56 · 194 阅读 · 1 评论 -
Hive笔记——Join、group by、排序、窗口函数
非全局排序,如果reducer数量设置为2,即有两个reduce task,数据再进入reduce之前会进行排序,即每个reduce会输出一个文件,文件中会进行排序,但只是局部有序;③task通常表示一个过程(进程),job通常表示用户提交的一个任务(目标),期望明确的结果,job可以包含多个task,可以认为task是一个JobHandler。③maptask运行的时候:会把小表中的数据读取到内存中,然后maptask会读取block块中大表的数据,读完后和小表中的内存中的数据join,最后对外输出。原创 2023-12-01 21:29:49 · 461 阅读 · 0 评论 -
Hive的三种自定义函数是什么(区别)?实现的步骤与流程?(一位大数据小白的笔记)
Hive的三种自定义函数的简单了解及区别、UDF的实现流程、UDTF的实现流程及两种使用方法原创 2023-11-29 22:14:59 · 381 阅读 · 1 评论