
Hive
文章平均质量分 80
Hive数据仓库技术
KK架构
天道酬勤
展开
-
使用 Antlr3 编译 Hive 语法分析文件
一、首先安装 Antlr3 环境从这个地址下载 antlr3 的包:https://www.antlr.org/download.html会跳转到 github 下载:https://github.com/antlr/website-antlr3/blob/gh-pages/download/antlr-3.4-complete.jar下载之后放到本地的一个目录中新建 antlr3.bat 文件,文件内容为:java -cp %~dp0antlr-3.4-complete.jar org.a原创 2022-05-15 22:17:03 · 863 阅读 · 0 评论 -
Hive 分桶表原理及优化大表 join 实战
一、什么是分桶表分桶表是比表或者分区表更为细粒度的数据范围划分。在针对某一列进行桶组织的时候,对列值哈希,然后除以桶的个数求余,来决定将不同的记录存放到哪一个桶中。所以分桶表对数据的处理比分区表更加细粒度化,分桶表可以在分区表的基础上进一步分桶,分桶表针对的是数据文件。使用的分桶表的主要好处就是,获得更高的数据查询和处理效率,或者可以进行抽样调查。二、什么时候可以使用分桶表分桶表最主要的使用场景是优化大表和大表的 join,其主要原理如下:(1)如果大表和大表使用 MapReduce 的普通模式在.原创 2022-04-30 22:21:12 · 6448 阅读 · 3 评论 -
Parquet 文件结构与优势
一个 Parquet 文件的内容有 Header、Data Block 和 Footer 三个部分组成。Header每个 Parquet 的首尾各有一个大小为 4 bytes ,内容为 PAR1 的 Magic Number,用来标识这个文件是 Parquet 文件。Data Block中间的 Data Block 是具体存放数据的区域,由多个行组(Row Group)组成。行组 (Row Group),是按照行将数据在物理上分成多个单元,每一个行组包含一定的行数。比如一个文件有10000条.原创 2022-04-29 13:20:59 · 2173 阅读 · 0 评论 -
如何 debug Hive 源码,知其然知其所以然
最近在出差,客户现场的 HiveServer 在很长时间内不可用,查看 CM 的监控发现,HiveServer 的内存在某一时刻暴涨,同时 JVM 开始 GC,每次 GC 长达 1 分钟,导致很长时间内,整个 HiveServer 不可用。查看 HiveServer 日志发现,在那个内存暴涨的时间点,执行了一个 select count(1) from table 的 SQL,这个表有 2 万多分区,而且执行了很多次。但是我始终无法解释,这样简单的 SQL 执行过程是什么,MapReduce 的什么阶段原创 2021-01-17 22:16:08 · 432 阅读 · 0 评论 -
Hive 的常用函数
1.COALESCE返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL例子:select COALESCE(null,1,‘2’) from tempon.test 结果:1如果第一个is null,则返回第二个2、nvl如果为null,则返回第二个值3.regexp_replaceregexp_replace(string INITIAL_STRING, stri...原创 2020-04-29 11:24:27 · 457 阅读 · 0 评论 -
Hive 一个窗口函数的问题解决
一、业务场景比如这儿有一个广告,有的是广告位,有的是非广告位用户浏览的时候,就会产生一个排序的数据,我们抽象成下面的一个表create table window_test_table (id int, --用户idsq string, --可以标识每个商品cell_type int, --标识每个商品的类型,比如广告,非广告rank int --这次搜索下商品的位置,比如...原创 2020-04-28 16:42:50 · 455 阅读 · 0 评论 -
Hive 日常最经常使用的参数
1. 将hive拉取的模式设置为more模式hive.fetch.task.conversion=more;2. 决定 Hive 是否应该自动地根据输入文件大小,在本地运行(在GateWay运行) ;hive.exec.mode.local.auto 3. 自动 mapjoin是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加...原创 2020-04-28 16:36:47 · 255 阅读 · 0 评论 -
Hive 动态分区和二级分区
一、参数配置开启动态分区功能set hive.exec.dynamic.partition=true;允许所有分区都是动态的set hive.exec.dynamic.partition.mode=nonstrict;其他相关参数调优每个 mapper 或者 reducer 可以允许创建的最大分区数,默认是100set hive.exec.max.dynamic.partitio...原创 2020-04-28 16:30:00 · 1089 阅读 · 0 评论 -
Hive 基本操作全覆盖
一、控制台使用1. 让提示符显示当前库hive>set hive.cli.print.current.db=true;显示查询结果时显示表的字段名称:hive>set hive.cli.print.header=true;2. 以上设置都仅仅在该会话中有效,结束会话后就失效解决方式:在linux的当前用户主目录中,编辑一个.hiverc(隐藏文件)文件,将参数写入其中...原创 2020-04-28 16:26:16 · 4828 阅读 · 0 评论 -
Hive 的窗口函数系统整理
一、窗口函数的概念窗口就是数据内部按某个字段分区,在分区内做一些事情。over()partition_byorder_bywindow函数row_number()rank()dense_rank()lag()lead()first_value()last_value()二、实例建立一个用户消费表:drop table tempon.t_user_cost;creat...原创 2020-04-25 20:24:46 · 341 阅读 · 0 评论 -
大数据面试题-Hive的常用企业优化
一、慎用常用内置的api数据量大尽量避免使用 count(distinct) ,这会导致所有数据在一个 reduce 内去重,导致运行缓慢,使用 group by 来代替二、合理调整 map 数 和 reduce 数下面我们列举几个常见的场景来分别进行调优场景1一个文件128M(一个 block 块的大小),但只有两列,数据量为几千万行,但只会产生一个 MapReduce解决方案:-...原创 2020-04-18 23:04:53 · 382 阅读 · 0 评论 -
Hive简介以及安装
Hive 简介Hive 由 Facebook 开源用于解决海量结构化日志的数据统计Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类 SQL 查询的功能Hive 是构建在 Hadoop 之上的数据仓库使用HQL作为查询接口使用 HDFS 存储使用 MapReduce 进行计算,本质是把 HQL 转化为 MapReduce 程序...原创 2019-12-16 11:16:58 · 161 阅读 · 0 评论