
Hive
K. Bob
多读书,多睡觉;少吃零食,多运动。
展开
-
Hive拉链表、快照表
拉链表记录一个事物从开始,一直到当前状态的所有变化的信息。可以使用这张表拿到最新的当天的最新数据以及之前的历史数据。拉链表的使用场景在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大一些表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等需要查看某一个时间点或者时间段的历史快照信息,比原创 2020-10-05 21:08:13 · 4473 阅读 · 1 评论 -
MetaStore Thrift
Hive MetaStore整体代码分析 远程metastore服务端和客户端之间使用Thrift协议通信。IMetaStoreClient接口定义了Metastore的thrift api,该接口中定义了操作元数据的各种方法。Hive中IMetaStoreClient的实现类是HiveMetaStoreClient。Hive.getMSC() ➔ createMetaStoreClient() ↳ RetryingMetaStoreClient.getProxy()//动态代理类创建代理对象原创 2020-09-23 11:53:21 · 1074 阅读 · 0 评论 -
Hive metastore(1)
Hive metastore整体代码分析及详解metadata的目录结构: 整个hivemeta的目录包含metastore(客户端与服务端调用逻辑)、events(事件目录包含table生命周期中的检查、权限认证等listener实现)、hooks(这里的hooks仅包含了jdo connection的相关接口)、parser(对于表达树的解析)、spec(partition的相关代理类)、tools(jdo execute相关方法)及txn及model。 下来从整个metadata分类逐一进原创 2020-07-18 19:37:48 · 1211 阅读 · 0 评论 -
Hive metastore(2)
从package结构来看,主要的5个package:metastore是metastore模块的入口,也是整个metastore模块的核心所在,里面包含了HiveMetaStore类作为整个模块的核心,接收来自Hive的请求,返回需要的信息metastore.api包含了调用和访问metastore模块的接口以及接口参数和返回值类型,metastore模块的用户可以通过api对metastore模块进行访问metastore.events用于metastore模块内部的观察者模式。因为metast.原创 2020-07-18 14:28:55 · 1717 阅读 · 0 评论 -
Hive metastore元数据管理
目录Hive metastore表结构设计分析Hive metastore整体代码分析及详解Hive metastore表结构设计分析 Hive metastore主要是描述数据的属性的信息。它是用来支持如存储位置、历史数据、资源查找、文件记录等功能。DBS表 Columns:DB_ID、DESC、DB_LOCATION_URI、NAME、OWNER_NAME、OWNER_TYPEDBS 表记录基本的db信息,其中DB_ID为其主键,同时也是FUNC_RU、FUNCS、DB_PRIVS、DA原创 2020-07-17 09:04:19 · 2430 阅读 · 0 评论 -
Hive的join方式
在用客户端连接Redis不成功,再解决的过程中又遇到了telnet的问题1、开启Telnet控制面板->程序和功能中的“打开或关闭Windows功能”->勾选Telnet服务器和Telnet客户端2、启动Telnet右键计算机->管理->服务->双击Telnet->选择自动->确定->右键Telnet->启动...原创 2019-05-26 22:31:02 · 4467 阅读 · 0 评论 -
Hive架构及存储结构
ASP.NET MVC之ActionResultActionResult定义ActionResult是什么各种Result说明ActionResult定义在MVC中,Action的返回结果是ActionResult。ActionResult 有多个派生类,每个子类功能不同,并且不是所有的子类都需要返回视图View,有些返回流,有些返回字符串等。作为一个抽象类,ActionResult定义了...原创 2019-07-16 11:32:08 · 2265 阅读 · 0 评论 -
Hive存储引擎
为什么Hive会有多种存储格式?因为Hive是文本批处理系统,所以就存在一个往Hive中导入数据的问题,首先数据的存储格式有多种,比如数据源是二进制格式, 普通文本格式等等,而Hive强大之处不要求数据转换成特定的格式,而是利用Hadoop本身InputFormat API来从不同的数据源读取数据,同样地使用OutputFormat API将数据写成不同的格式。所以对于不同的数据源,或者写出不...原创 2020-04-27 22:21:26 · 1082 阅读 · 0 评论 -
Hive中order by、sort by、distribute by、cluster by的区别
order by order by会对输入做全局排序,因此只有一个Reducer(多个Reducer无法保证全局有序),会导致当输入规模较大时,消耗较长的计算时间。sort by sort by不是全局排序,其在数据进入reducer前完成排序,因此,如果用sort by进行排序,并且设置mapred.reduce.tasks>1,则sort by只会保证每个reducer的输出有...原创 2020-04-27 20:03:47 · 322 阅读 · 0 评论 -
Hive窗口函数/内部、外部表
在SQL处理中,窗口函数都是最后一步执行,而且仅位于Order by字句之前。聚合函数+over查询在2015年4月份购买过的顾客及总人数,使用窗口函数实现select name,count(*) over ()from t_windowwhere substring(orderdate,1,7) = '2015-04'partition by子句Over子句之后第一个提到的就是P...原创 2020-04-25 14:43:55 · 337 阅读 · 0 评论 -
Hive sql编译过程
Hive在执行sql时会以MapReduce的方式对数据进行接入和处理,主要包含以下阶段:Hive sql的执行及编译过程:Hive首先根据sql语句中的表从HDFS文件中获取数据,对数据文件进行split操作,使其可以一行一行将所需数据读入内存Map函数将内存中的数据按照key值进行映射,形成一行一行的key-value值在实际应用中会有多台机器参与Map处理,Map完成后需要将带有...原创 2020-02-13 17:37:54 · 832 阅读 · 0 评论 -
Hive分桶分区
在传统DBMS系统一般都具有表分区的功能,通过表分区能够在特定的区域检索数据,减少扫描成本,在一定程度上提高查询效率,还可以通过进一步在分区上建立索引进一步提升查询效率。 在Hive数仓中也有分区分桶的概念,在逻辑上分区表与未分区表没有区别,在物理上分区表会将数据按照分区键的列值存储在表目录的子目录中,目录名=“分区键=键值”。其中需要注意的是分区键的值不一定要基于表的某一列(字段),它可...原创 2020-02-06 16:27:58 · 690 阅读 · 0 评论 -
UDF
UDF定义 UDF函数用户自定义函数,在查询执行过程就是在Hive转换成MapReduce程序后,执行java方法,类似于像MapReduce执行过程中加入一个插件,方便扩展。Hive中有3种UDF:UDF:操作单个数据行,产生单个数据行UDAF:操作多个数据行,产生一个数据行UDTF:操作一个数据行,产生多个数据行一个表作为输出如何构建UDF用户构建的UDF使用过程如下:继...原创 2019-12-08 00:38:23 · 743 阅读 · 0 评论 -
HQL排查数据倾斜
如果某个key下记录数远超其他key,在join或group的时候可能会导致某个reduce任务特别慢。本例子SQL如下:查询每个appid打开的次数,需要排除掉作弊的imei。说明:表cheat_imei,7500万条,无大key,为作弊的imei。表imei_open_app,5亿6526万条,为每个imei打开的appid。该表中存在大key,md5imei=54bc0748b1c0fb...转载 2019-12-07 19:17:03 · 625 阅读 · 0 评论 -
Hive调优
Hive总结Hive基础Hive概念Hive基本语法Hive优化Hive基础Hive概念 首先Hive是构建在Hadoop之上的,其实就是Hive中的数据其实是存储再HDFS上的(加上LOCAL关键字则是在本地),默认在/user/hive/warehouse/table,有助于对大型数据集进行读、写和管理。Hive的特征:可通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取...原创 2019-12-06 21:54:54 · 556 阅读 · 0 评论 -
缓慢变化维
缓慢变化维缓慢变化维:维度建模的数据仓库中,缓慢变化维(Slowly Changing Dimensions,SCD)。缓慢变化维的提出是因为维度的属性并不是静态的,它会随着时间的流失发生缓慢的变化。这种随时间发生变化的维度称之为缓慢变化维,并且把处理维度表的历史变化信息的问题称为处理缓慢变化维的问题,即处理SCD的问题。处理缓慢变化维的方法通常分为三种方式:第一种方式是直接覆盖原值。这样...原创 2019-12-05 00:13:09 · 613 阅读 · 0 评论 -
Hive数据倾斜
数据倾斜数据倾斜主要表现在,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其他key多很多,这条key所在的reduce节点所处理的数据量比其他节点就大很多,从而导致某几个节点迟迟运行不完。发生数据倾斜的Situation数据倾斜可能会发生在group过程/join过程大...原创 2019-12-03 11:04:30 · 602 阅读 · 0 评论 -
Hive的Map/Reduce数目如何确定
Hive的Map/Reduce数目如何确定Mapreduce中Mapper个数的确定Mapreduce中Reducer个数的确定Mapreduce中Mapper个数的确定 在Map阶段读取数据前,FileInputFormat会将输入文件分割成Split。Split的个数决定了Map的个数。 影响Map个数,即Split个数的因素主要有: 1)HDFS中dfs.block.size的值,...原创 2019-11-30 21:04:33 · 1710 阅读 · 0 评论 -
Hive疑难杂问
什么是拉链表拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。拉链表的使用场景在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大...原创 2019-11-29 09:52:59 · 730 阅读 · 0 评论 -
数据仓库
数据仓库的基本概念什么是数据仓库数据仓库的特点面向主题的集成的不可更新的随时间不断变化的数据仓库与数据库的区别什么是数据仓库 在企业所有级别的决策制定过程,数据仓库(Data Warehouse)可以提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监事时间、成本、质量以及控制。数据仓库的特点面向主题的 与传统数据库面向...原创 2019-05-15 20:19:36 · 2071 阅读 · 0 评论 -
数据仓库分层
数据仓库分层在做像pv、cv类型的分析,往往借助于一张大宽表和几张维度表,所有的统计分析都基于这张大宽表与维度表。在这种简单的应用场景,这种设计没有问题且简单明了,但是如果业务场景复杂,数据种类多,维度多,那么数据仓库的设计就尤为重要,结构清晰明了的数据仓库设计将方便对问题数据进行排查,数据仓库可分为:ODS(原始数据)、DWD(明细视图,拉链表)、DW(维度表)、DM(宽表)、APP(应用层)...原创 2019-11-24 00:26:22 · 2891 阅读 · 0 评论 -
Hive的内置函数parse_url_tuple/lateral view/explode
Hive的内置函数parse_url_tuple与lateral view大数据技术普及后,很多类似pv,uv的数据,在业务系统中以json的方式存储存贮在非关系型数据库中,直接导入hive为基础的数仓系统中,就需要经过ETL过程解析这类数据,Hive的lateral view内置函数在这种情景下应运而生。【1】parse_url_tuple()语法: parse_url(string ur...原创 2019-11-05 00:16:17 · 1081 阅读 · 1 评论 -
Hive搭建
Hive搭建过程中遇到的问题Hive启动时,报错Relative path in absolute URI:${system:java.io.tmpdir}bash: schematool: command not foundHive启动时,报错Relative path in absolute URI:${system:java.io.tmpdir}启动Hadoop后运行Hive时出现如下错...原创 2019-04-17 13:58:27 · 1687 阅读 · 0 评论