![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
Hive
千里快哉风Y
这个作者很懒,什么都没留下…
展开
-
Hive窗口函数
over()必须跟在聚合函数后,()中为空,表示对整个数据集开窗 ROW_NUMBER() 按顺序排名 1234 RANK() 排名相等会在名次中留下空位 1134 DENSE_RANK() 排名相等会在名次中不会留下空位 1123 PRECEDING:往前 FOLLOWING:往后 CURRENT ROW:当前行 UNBOUNDED:起点 UNBOUNDED PRECEDING 表示从前面的起点 UNBOUNDED FOLLOWING 表示到后面的终点 NTILE(n) 用于将分组数据按照顺序切原创 2021-03-15 11:01:28 · 50 阅读 · 0 评论 -
Hive自定义UDF函数流程
1)写一个类继承(org.apache.hadoop.hive.ql.)UDF类; 2)重写evaluate()方法; 3)打JAR包; 4)添加JAR到Hive的类路径: hive> add jar /home/ubuntu/ToDate.jar; 5)注册函数: hive> create temporary function xxx as ‘XXX’; 6)使用函数; UDF(一进一出) UDAF(多进一出) UDAF(一进多出) 简单的数据类型(比如String、Inte原创 2021-03-15 10:55:16 · 421 阅读 · 0 评论 -
Hive优化
1.Fetch抓取 对简单的查询可以不走MapReduce,直接从文件中读取数据 2.本地模式 对于小数据集,可以通过本地模式在单台机器上处理所有的任务 3.严格模式 限制笛卡尔积的查询 对于使用了order by的查询语句,必须使用limit限制查询结果 对于分区表,除非用where指定了分区,否则不予执行 4.开启并行执行 Hive会将一个查询转化成多个阶段,默认情况下,Hive一次只会执行一个阶段 5.开启推测执行 启动一个备份任务,与原任务同时处理同一份数据,最终选用最先完成任务的计算结果作为最终结原创 2021-03-15 10:53:24 · 41 阅读 · 0 评论 -
Hive内部表和外部表区别
1.内部表数据的存储位置默认在/user/hive/warehouse下,删除时,元数据和hdfs上的数据都会被删除,适用于临时创建的中间表。 2.外部表数据的存储位置由自己指定,删除时,只删除元数据,外部表相对安全,适用于数据共享的情况。 ...原创 2021-03-15 10:48:47 · 185 阅读 · 0 评论 -
Hive压缩格式
LZO和BZip2支持文件切分 Snappy和Gzip不支持文件切分 Snappy不支持文件分割操作,文件只会被一个任务所读取,如果该压缩文件很大,那么处理该文件的Map需要花费很长时间,为了避免这种情况的发生,就需要采用支持文件分割的压缩算法,但ORC不支持这些压缩方式,所以大文件压缩不选择ORC,避免数据倾斜。 实际生产中,使用Parquet+LZO更常见,可以避免由于读取不可分割大文件引发的数据倾斜,数据量不大的情况下,使用ORC+Snappy ...原创 2021-03-15 10:46:59 · 108 阅读 · 0 评论 -
Hive和Hbase的区别
Hive是数据仓库,严格来说不是数据库,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能,适用于离线的数据批处理。 Hbase是一种非关系型数据库,主要适用于海量数据的随机实时查询。 二者一般配合使用,通过HIve清洗处理后的数据,如果是面向海量数据随机查询场景的可存入Hbase。 ...原创 2021-03-12 16:21:57 · 69 阅读 · 0 评论 -
Hive中导入和导出数据的方式
导入: 1从本地导入: load data local inpath ‘/home/1.txt’ (overwrite)into table student; 2从Hdfs导入: load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student; 3建表导入: create table student1 as select * from student; 4插入导入:insert (overwrite)into table原创 2021-03-15 10:44:15 · 78 阅读 · 0 评论 -
Hive数据倾斜原因及解决方案
原因: key的hash值分布不均匀或者业务本身的特性,造成reduce上的数据量差异过大,导致某些reduce任务进度长时间维持在99%。某些SQL语句本身就有数据倾斜。 解决方案: 1>参数调节: 开启map端合并(combine操作) hive.map.aggr=true 开启负载均衡 hive.groupby.skewindata=true 2>SQL语句调节: 1)两个表join的时候选用key分布最均匀的表作为驱动表,做好列裁剪和过滤操作。 2)小表Joi原创 2021-03-12 16:27:12 · 260 阅读 · 0 评论 -
Hive与关系型数据库的区别
1、hive适合海量数据,事务性和实时性较差 rdbms一般数据量相对来说不会太大,事务性和实时性较好 2、hive的计算引擎是mapreduce rdbms的计算引擎由数据库自己设计实现 3、hive的扩展能力比较好 rdbms的扩展能力比较差 4、hive没有主键和索引,不支持更新操作 rdbms有主键和索引,支持增删改查 ...原创 2021-03-12 16:23:46 · 173 阅读 · 0 评论