![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hive
大数据面试宝典
这个作者很懒,什么都没留下…
展开
-
大数据高频面试题之Hive的数据存储格式
类型texfile:默认的存储格式:普通的文本文件,数据不压缩,磁盘的开销比较大,分析开销大。sequencefile:提供的一种二进制存储格式,可以切割,天生压缩。rcfile:提供的是一种行列混合存储方式,该方式会把相近的行和列数据放在一块儿,存储比较耗时,查询效率高,也天生压缩。orc:是rcfile的一种优化存储。parquet:自定义输入输出格式。具体描述1)texfile普通文本文件(通常默认的就是这个格式)创建表create table if not exists one (原创 2021-04-15 19:11:49 · 322 阅读 · 0 评论 -
大数据高频面试题之Hive表数据的加载与导出
Hive表数据加载1)直接向分区表中插入数据insert into table score3 partition(month =‘201807’) values (‘001’,‘002’,‘100’);2)通过查询插入数据先通过load加载创建一个表(linux) load data local inpath ‘/export/servers/hivedatas/score.csv’ overwrite into table score partition(month=‘201806’);(HD原创 2021-04-15 19:06:24 · 232 阅读 · 0 评论 -
大数据高频面试题之Hive常用函数总结
Hive内部支持大量的函数,可以通过 SHOW FUNCTIONS 查看Hive的内置函数。灵活地运用Hive提供的函数能够极大地节省数据分析成本。Hive函数主要包含数学函数,集合函数,类型转换函数,日期函数,条件函数,字符串函数,聚合函数和表生成函数等。1)数学函数数学函数是Hive内部提供的专门用于数学运算的函数,如round()函数和sqrt()函数等。round()函数主要用来对给定的数字进行四舍五入取近似值,如下所示:hive (default)> SELECT ROUND(5.5)原创 2021-04-14 17:57:28 · 307 阅读 · 0 评论 -
大数据高频面试题之Hive的分区及其优势
什么是hive分区 : 就是一种对表进行粗略划分的机制,可以实现加快查询速度的组织形式.在使用分区时, 在表目录下会有相应的子目录,当查询时添加了分区谓词,那么该查询会直接定位到相应的子目录中进行查询,避免全表查询,提成查询效率.注意事项:1 . hive的分区使用的表外字段,分区字段是一个伪列但是可以查询过滤。2 . 分区字段不建议使用中文3 . 不太建议使用动态分区。因为动态分区将会使用mapreduce来查询数据,如果分区数量过多将导致namenode和yarn的资源瓶颈。所以建议动态分区前原创 2021-04-13 14:44:08 · 415 阅读 · 0 评论 -
大数据高频面试题之Hive的严格模式
Hive提供了一个严格模式,可以防止用户执行那些可能意想不到的不好的影响的查询。通过设置属性hive.mapred.mode值为默认是非严格模式nonstrict 。开启严格模式需要修改hive.mapred.mode值为strict,开启严格模式可以禁止3种类型的查询。对于分区表,除非where语句中含有分区字段过滤条件来限制范围,否则不允许执行。换句话说,就是用户不允许扫描所有分区。进行这个限制的原因是,通常分区表都拥有非常大的数据集,而且数据增加迅速。没有进行分区限制的查询可能会消耗令人不可接受的原创 2021-04-13 14:40:14 · 210 阅读 · 0 评论 -
大数据高频面试题之如何合理设置Reduce的数量
1.调整reduce个数方法一(1)每个Reduce处理的数据量默认是256MBhive.exec.reducers.bytes.per.reducer=256000000(2)每个任务最大的reduce数,默认为1009hive.exec.reducers.max=1009(3)计算reducer数的公式N=min(参数2,总输入数据量/参数1)2.调整reduce个数方法二在hadoop的mapred-default.xml文件中修改设置每个job的Reduce个数set mapre原创 2021-04-13 14:37:18 · 422 阅读 · 0 评论 -
大数据高频面试题之Hive的小文件合并
(1)在map执行前合并小文件,减少map数:CombineHiveInputFormat具有对小文件进行合并的功能(系统默认的格式)。HiveInputFormat没有对小文件合并功能。set hive.input.format= org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;(2)在Map-Reduce的任务结束时合并小文件的设置:在map-only任务结束时合并小文件,默认trueSET hive.merge.mapfiles = tr原创 2021-04-13 14:34:09 · 263 阅读 · 0 评论 -
大数据高频面试题之Hive怎么解决数据倾斜
场景: MR中,shuffle阶段的一个key值对应了很多值,那么就会将这么多值分到一个分区中hive中,两个表做join maptask中一个任务处理的时间明显大于其他task的时间 就是出现了数据倾斜的问题开启数据倾斜时负载均衡set hive.groupby.skewindata=true;思想:就是先随机分发并处理,再按照 key group by 来分发处理。操作:当选项设定为 true,生成的查询计划会有两个 MRJob。第一个 MRJob 中,Map 的输出结果集合会随机分布到 Re原创 2021-04-13 14:29:48 · 267 阅读 · 0 评论 -
大数据高频面试题之Hive的自定义函数
1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。3)根据用户自定义函数类别分为以下三种:UDF:User-Defined-Function,用户自定义函数,数据是一进一出,功能类似于大多数数学函数或者字符串处理函数;UDAF:User-Defined Aggregation Function,用户自定原创 2021-04-13 14:25:25 · 211 阅读 · 0 评论 -
大数据高频面试题之HiveSQL的转化过程
Hive是如何将SQL转化为MapReduce任务的,整个编译过程分为六个阶段:1.Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;2.遍历AST Tree,抽象出查询的基本组成单元QueryBlock;3.遍历QueryBlock,翻译为执行操作树OperatorTree;4.逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;5.遍历OperatorTree,翻译为MapR原创 2021-04-08 10:14:44 · 313 阅读 · 0 评论 -
大数据高频面试题之Hive的内部表和外部表
创建表时:创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径, 不对数据的位置做任何改变。删除表时:在删除表的时候,内部表的元数据和数据会被一起删除, 而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。1.未被external修饰的是内部表【managed table】,被external修饰的为外部表【external table】2.内部表数据由Hive自身管理,外部表数据由HDFS管理。3.内部表数据存储在hiv原创 2021-04-08 10:13:56 · 270 阅读 · 0 评论 -
大数据高频面试题之Hive的优缺点
1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。2)避免了去写MapReduce,减少开发人员的学习成本。3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。缺点1.Hive的HQL表达能力有限(1)迭代式算法无法表达(2)数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效原创 2021-04-08 10:12:57 · 363 阅读 · 0 评论 -
Hive的架构组成详解
如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。一、概要用户接口:ClientCLI(command-line interface)、JDBC/ODBC(jdbc访问hive)、WEBUI(浏览器访问hive)元数据:Metastore元数据包括:表名、表所属的数据库(默认是default)、表的.原创 2021-04-02 23:40:30 · 749 阅读 · 0 评论 -
Hive是什么?
Hive是什么?一、概述Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。而且,hive十分适合数据仓库的统计分析。二原创 2021-04-02 23:36:52 · 1517 阅读 · 0 评论 -
启动Hive报错java.sql.SQLException: Access denied for user ‘root‘@‘node16‘ (using password: YES)
上截图原因分析我的配置文件中mysql的账号密码没问题使用账号密码也可以正常进入mysql权限也没问题解决方案1.重新设置一下mysql密码 与hive配置文件中一致进入mysqlSET PASSWORD=PASSWORD('XXXXXX');xxx为你的密码(自定义,与hive配置中一致即可)2.刷新mysql配置(重要!!!)flush privileges;...原创 2020-03-11 14:40:39 · 5038 阅读 · 0 评论 -
hive主流的数据存储格式与压缩_对比实验
1.准备工作找一个测试文件 log.data 大小为18.1M2.存储格式对比2.1 默认的 TextFile默认格式,数据不做压缩,磁盘开销大,数据解析开销大。可结合Gzip、Bzip2使用(系统自动检查,执行查询时自动解压),但使用这种方式,hive不会对数据进行切分,从而无法对数据进行并行操作。创建表,存储数据格式为TEXTFILEcreate table log_text...原创 2020-03-07 11:54:54 · 5933 阅读 · 1 评论 -
hive建表报错 character ‘ ‘ not supported here
问题分析提示每一行的前三个 有不支持的字符解决方案将前面三个空格 或者更 位置字符删除即可原创 2020-03-03 17:02:30 · 6126 阅读 · 0 评论 -
Hive的调优(看完这篇你就可以从小白到大白了)
文章目录Fetch抓取(Hive可以避免进行MapReduce)本地模式Group By开启Map端聚合参数设置Count(distinct)笛卡尔积使用分区剪裁、列剪裁动态分区调整开启动态分区参数设置数据倾斜Map数通常情况下,作业会通过input的目录产生一个或者多个map任务。举例:是不是map数越多越好?是不是保证每个map处理接近128m的文件块,就高枕无忧了?如何适当的增加map数re...原创 2019-11-30 12:40:44 · 5087 阅读 · 1 评论 -
hive的数据存储格式
Hive支持的存储数据的格式主要有:TEXTFILE(行式存储) 、SEQUENCEFILE(行式存储)、ORC(列式存储)、PARQUET(列式存储)。列式存储和行式存储上图左边为逻辑表,右边第一个为行式存储,第二个为列式存储。行存储的特点:查询满足条件的一整行数据的时候,==行存储只需要找到其中一个值,其余的值都在相邻地方。==列存储则需要去每个聚集的字段找到对应的每个列的值,...原创 2019-11-30 12:00:44 · 4980 阅读 · 0 评论 -
hive的数据压缩
在实际工作当中,hive当中处理的数据,一般都需要经过压缩,前期我们在学习hadoop的时候,已经配置过hadoop的压缩,我们这里的hive也是一样的可以使用压缩来节省我们的MR处理的网络带宽MR支持的压缩编码压缩格式工具算法文件扩展名是否可切分DEFAULT无DEFAULT.deflate否GzipgzipDEFAULT.gz否bz...原创 2019-11-30 11:48:20 · 4870 阅读 · 0 评论 -
Hive自定义函数
查看hive的内置函数Hive官方文档查看系统自带的函数hive> show functions;显示自带的函数的用法hive> desc function upper;详细显示自带的函数的用法hive> desc function extended upper;Hive自定义函数Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过...原创 2019-11-30 10:38:26 · 4764 阅读 · 0 评论 -
hive参数配置方式
hive参数大全hadoop官方参数大全开发Hive应用时,不可避免地需要设定Hive的参数。设定Hive的参数可以调优HQL代码的执行效率,或帮助定位问题。然而实践中经常遇到的一个问题是,为什么设定的参数没有起作用?这通常是错误的设定方式导致的。一般参数的三种设置方式:配置文件命令行设置参数声明配置文件:hive的配置文件包括↘用户自定义配置文件:$HIVE_CONF_DI...原创 2019-11-30 10:23:23 · 4898 阅读 · 0 评论 -
hive导出数据的7种方式
将hive表中的数据导出到其他任意目录,例如linux本地磁盘,例如hdfs,例如mysql等等insert导出将查询的结果导出到本地insert overwrite local directory '/export/servers/exporthive/a' select * from 表名;将查询的结果格式化导出到本地insert overwrite local directo...原创 2019-11-30 10:03:55 · 6188 阅读 · 0 评论 -
Hive表中加载数据的5中方式
1.直接分区表中插入数据create table score3 like score;insert into table score3 partition(month ='201807') values ('001','002','100');2.通过查询插入数据通过load方式加载数据load data local inpath '/export/servers/hivedat...原创 2019-11-30 09:57:16 · 4923 阅读 · 0 评论 -
Hive分桶表入门
什么是分桶表将数据按照指定的字段进行分成多个桶中去,说白了就是将数据按照字段进行划分,可以将数据按照字段划分到多个文件当中去开启分桶表功能set hive.enforce.bucketing=true;设置reduce的个数set mapreduce.job.reduces=3;入门案例(数据自己弄,路径自己设,注意分隔符)创建桶表create table cour...原创 2019-11-29 21:49:12 · 4991 阅读 · 0 评论 -
Hive的分区表入门
什么是分区表:数据分区的概念以及存在很久了,通常使用分区来水平分散压力,将数据从物理上移到和使用最频繁的用户更近的地方,以及实现其目的。hive中有分区表的概念,我们可以看到分区具重要性能优势,而且分区表还可以将数据以一种符合逻辑的方式进行组织,比如分层存储分区表分别有静态分区和动态分区在大数据中,最常用的一种思想就是分治,我们可以把大的文件切割划分成一个个的小的文件,这样每次操作一...原创 2019-11-29 21:45:17 · 4737 阅读 · 0 评论 -
hive外部表入门
外部表说明:外部表因为是指定其他的hdfs路径的数据加载到表当中来,所以hive表会认为自己不完全独占这份数据,所以删除hive表的时候,数据仍然存放在hdfs当中,不会删掉管理表和外部表的使用场景:每天将收集到的网站日志定期流入HDFS文本文件。在外部表(原始日志表)的基础上做大量的统计分析,用到的中间表、结果表使用内部表存储,数据通过SELECT+INSERT进入内部表。操作案...原创 2019-11-29 21:38:06 · 4953 阅读 · 0 评论 -
Hive的三种交互方式
前提:hive的bin目录已添加到hive的环境变量中1.第一种交互方式:Hive交互shell直接 hive 回车2.第二种交互方式:Hive JDBC服务启动hiveserver2服务前台启动hive --service hiveserver2后台启动nohup hive --service hiveserver2 &beeline连接hiv...原创 2019-11-29 21:33:33 · 5005 阅读 · 0 评论 -
面试官: hive你都会了吗?
1、什么是Hive?Hive是基于Hadoop的一个数据仓库工具,能将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能,(能将SQL语句转变成MapReduce任务来执行。)2、Hive的意义(最初研发的原因)?降低程序员使用Hadoop的难度,降低学习成本,3、Hive的内部组成模块,作用分别是什么?元数据:描述数据的数据内部执行流程:解析器(解析器SQL语句)...原创 2019-11-29 21:12:52 · 4933 阅读 · 0 评论 -
使用mysql共享hive元数据
安装mysql1.在线安装 mysql 相关软件包yum -y install mysql mysql-server mysql-devel2.启动mysql服务并设置开机自启/etc/init.d/mysqld startchkconfig mysqld on3.进入mysql的客户端然后进行授权mysqluse mysql;4.配置远程连接grant all...原创 2019-11-20 20:32:28 · 4969 阅读 · 0 评论 -
Hive的安装部署(超详细)
1.首先需要准备一下几个安装包hivemysql的jar包链接:https://pan.baidu.com/s/1AQNFhTZ3Fam9EhJ2wfjzKw 提取码:jo2i 复制这段内容后打开百度网盘手机App,操作更方便哦2.安装hive上传安装包,解压cd 安装包所在目录tar zxvf hive-1.1.0-cdh5.14.0.tar.gz -C ../ins...原创 2019-11-20 17:12:51 · 5033 阅读 · 3 评论 -
Hive快速入门
1.什么是HiveHive是基于hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提空类SQL查询功能(HQL)其本质是将SQL转化为MapReduce的任务进行运算,底层由HDFS来提供数据的存储,hive可以理解成一个将SQL转换为MapReduce任务的工具2.为什么要使用Hive直接使用hadoop所面临的问题:人员学习成本太高项目周期要求太短...原创 2019-11-20 16:07:58 · 4988 阅读 · 3 评论 -
DataGrip(多引擎数据库管理工具)连接Hive教程
1.首先你的电脑中需要有DataGrip软件链接:https://pan.baidu.com/s/1JpVi4u6bR84Frti_7U0gSw 提取码:bc2t 复制这段内容后打开百度网盘手机App,操作更方便哦2.你手里有hive驱动的jar包链接:https://pan.baidu.com/s/1mG-ITfEDc_SYzyFN4JyGpA 提取码:rbjs复制这段内容后打开...原创 2019-11-20 15:03:07 · 5798 阅读 · 2 评论