您当前的位置:首页 >> 智慧农业
智慧农业

大数据专业训练-Hive高频面试题分享

发布时间:2025-11-01

蒂诺列于于完全不同单可能列于于,但在很多时候的点自在间内的可能列于于;还有一个,而一个维列于于也不不算可能被多个可能列于于加进。在经营范围蓬勃发展后期,绝大部份的点数据分析都采用的是天球方式在。

6、为什么要对数据资料仓库低层

用自在间放时间,通过大量的预处置来提升应用种系统的用户玩游戏(生产成本),因此数据资料仓库时会 存留在大量冗余的数据资料。如果不低层的话,如果引经营范围种系统的经营范围规则保持稳定将时会极为需影响整个数据资料清洗更进一步,兼职量更大。

通过数据资料低层政府机构可以简化数据资料清洗的更进一步,因为把于是就一步的兼职分到了多个作法去完毕,大概把一个有用的兼职拆卸成了多个直观的兼职,把一个大的黑匣子替换成了一个白盒,每一层的处置逻辑都相对来说直观和不易理解,这样我们比起不易应有每一个作法的正确性,当数据资料暴发错误的时候,往往我们只需一个种系统修订某个作法即可。

7、加进过Hive类比JSON串吗

Hive处置json数据资料基本上来说有两个朝向的二路丢下:

a.将json以字符串的作法整个入Hive列于于,然后通过加进UDFformula_类比仍然为基础到hive之中的数据资料,比如加进LATERAL VIEW json_tuple的作法,获取所需的列于名。

b.在为基础早先将json拆卸成各个队列于,为基础Hive列于于的数据资料是仍然类比过的。这将需加进第三方的 SerDe。

8、sort by 和 order by 的差别

order by 时会对读取动手一个种系统依序,因此只有一个reducer(多个reducer只能应有一个种系统时序)只有一个reducer,时会导致当读取覆盖面更大时,需不长的量化时间。

sort by不是一个种系统依序,其在数据资料挡住reducer从前完毕依序. 因此,如果用sort by展开依序,并且设置mapred.reduce.tasks>1, 则sort by只应有每个reducer的可用时序,不应有一个种系统时序。

9、数据资料弧度怎么妥善解决

自在绝对值导致的数据资料弧度 妥善框架: 第一种:可以极为需不想null绝对值进行join操作作法,即不想null绝对值有shuffle期中 第二种:因为null绝对值进行shuffle时的hash结果是一样的,那么我们可以给null绝对值随机作诗绝对值,这样它们的hash结果就不一样,就时会挡住有所不同的reduce之中 有所不同数据资料种类导致的数据资料弧度 妥善框架: 如果key队列于既有string种类也有int种类,匹配的hash就都时会按int种类来扣除,那我们极为需把int种类都应运而生string就好了,这样key队列于都为string,hash时就按照string种类扣除了 不必分离出来大副本导致的数据资料弧度 妥善框架: 这种数据资料弧度关按键问题不能什么好的妥善框架,持续性下将加进GZIP填充等不支持者副本日后分的副本应运而生bzip和zip等支持者副本日后分的填充作法。 所以,我们在对副本展开填充时,为尽量避免因不必分离出来大副本而导致数据资料写入的弧度,在数据资料填充的时候可以采用bzip2和Zip等支持者副本日后分的填充算法。 数据资料膨胀导致的数据资料弧度 妥善框架: 在Hive之中可以通过匹配 hive.new.job.grouping.set.cardinality 装配的作法则会控制施作的封存,该匹配匹配绝对值是30。列于于示针对grouping sets/rollups/cubes这类蒂诺催化的操作作法,如果先以从前封存的按键第除此以外多于该绝对值,时会启用同属自己使命去处置多于该绝对值除此以外的第除此以外。如果在处置数据资料时,某个第除此以外催化的列于有更大的弧度,可以合理调小该绝对值。 列于于连接起来时导致的数据资料弧度 妥善框架: 往往不应是将弧度的数据资料存留到特有种式线程留之中,试加进各个Map使命所在端口。在Map期中完毕join操作作法,即MapJoin,这尽量避免了 Shuffle,从而尽量避免了数据资料弧度。 可能只能增大数据资料量导致的数据资料弧度 妥善框架: 这类关按键问题最极为需的作法就是修订reduce所拒绝执行的文件种系统留大小。 修订reduce的文件种系统留大小加进mapreduce.reduce.memory.mb这个装配。

10、Hive 小副本过多怎么妥善解决

加进 hive 自带的 concatenate 命令,则会分拆卸小副本

修订匹配增大Map量

增大Reduce的量

加进hadoop的archive将小副本备份

11、Hive简化有哪些

数据资料存留储及填充

通过调参简化

有效地地增加数据资料集将大列于于分离出来成子列于于;联结加进内部列于于和的区列于于

SQL简化

二、Hive极低频面试点集合

1、Hive的两张列于于联系,加进MapReduce怎么付诸?

如果其之中有一张列于于为小列于于,极为需加进map故又称join的作法(map故又称写入小列于于)展开催化。

如果两张都是大列于于,那么采用联合key,联合key的第一个组成部份是join on之中的公共队列于,第二部份是一个flag,0代列于于列于于A,1代列于于列于于B,由此让Reduce分成客户诬蔑馈和订单诬蔑馈;在Mapper之中同时处置两张列于于的诬蔑馈,将join on公共队列于不同的数据资料分成到同一个的区之中,进而传递到一个Reduce之中,然后在Reduce之中付诸催化。

2、请谈一下Hive的特性,Hive和RDBMS有什么论说?

hive是基于Hadoop的一个数据资料仓库工具,可以将一个通用的数据资料副本拓扑为一张数据资料库列于于,并提供完整的sql核对新功能,可以将sql运算符转放为MapReduce使命展开运行。其特性是进修成本更极低,可以通过类SQL运算符更快付诸直观的MapReduce统计,可不整合专供的MapReduce应用,更为适合数据资料仓库的图表,但是Hive不支持者极低分辨率核对。

Hive与关连改进型数据资料库的差别:

3、请说明了hive之中 Sort By,Order By,Cluster By,Distrbute By各代列于于什么含意?

Order by:时会对读取动手一个种系统依序,因此只有一个reducer(多个reducer只能应有一个种系统时序)。只有一个reducer,时会导致当读取覆盖面更大时,需不长的量化时间。

Sort by:不是一个种系统依序,其在数据资料挡住reducer从前完毕依序。1

Distribute by:按照而无须的队列于对数据资料展开分成可加进有所不同的reduce之中。

Cluster by:除了具 distribute by 的新功能外还极富 sort by 的新功能。

4、读到Hive之中split、coalesce及collect_listformula_的用法(可;也)?

split将字符串转化为数组,即:split('a,b,c,d' , ',') ==> ["a","b","c","d"]。

coalesce(T v1, T v2, …) 返回匹配之中的第一个非自在绝对值;如果所有绝对值都为 NULL,那么返回NULL。

collect_list列于出该队列于所有的绝对值,不去重为 => select collect_list(id) from table。

5、 Hive有哪些作法存留留装配文件资料,两大哪些特性?

Hive支持者三种有所不同的元存留储IP,分别为:内嵌式元存留储IP、本地元存留储IP、远程元存留储IP,每种存留储作法加进有所不同的装配匹配。

内嵌式元存留储主要常用单元试验,在该方式在下每次只有一个进程可以连接起来到元存留储,Derby是内嵌式元存留储的匹配数据资料库。

在本地方式在下,每个Hive客户故又称都时会挡住到数据资料存留储的连接起来并在该连接起来上请求SQL核对。

在远程方式在下,所有的Hive客户故又称都将挡住一个到装配文件资料IP的连接起来,该IP依次核对装配文件资料,装配文件资料IP和客户故又称之间加进Thrift协商通信。

6、Hive内外列于于和内部列于于的差别?

始创列于于时:始创内外列于于时,时会将数据资料回转到数据资料仓库抛出的二路径;若始创内部列于于,仅据信数据资料所在的二路径,不对数据资料的位置动手任何彻底改变。

删去列于于时:在删去列于于的时候,内外列于于的装配文件资料和数据资料时会被独自删去, 而内部列于于只删去装配文件资料,不删去数据资料。这样内部列于于相对来说来说更加安全些,数据资料组织也更加紧凑,方便构建引数据资料。

7、Hive的formula_:UDF、UDAF、UDTF的差别?

UDF:单行挡住,单行可用

UDAF:多行挡住,单行可用

UDTF:单行读取,多行可用

8、所有的Hive使命都时会有MapReduce的拒绝执行吗?

不是,从Hive0.10.0修订版开始,对于直观的不需催化的多种不同SELECT from

LIMIT n运算符,不需起MapReduce job,极为需通过Fetch task获取数据资料。

9、说说对Hive桶列于于的理解?

桶列于于是对数据资料某个队列于展开哈希取绝对值,然后放到有所不同副本之中存留储。

数据资料写入到桶列于于时,时会对队列于取hash绝对值,然后与桶的量取模。【关注唯中央商务区,得心应手学IT】把数据资料放到完全不同的副本之中。宇宙学上,每个桶就是列于于(或的区)目录之中的一个副本,一个施作产生的桶(可用副本)和reduce使命个数不同。

桶列于于专供常用比对核对,是很专业性的,不是日常用来存留储数据资料的列于于,需比对核对时,才始创和加进桶列于于。

12、Hive 之中的填充文件格式TextFile、SequenceFile、RCfile 、ORCfile两大什么差别?

1、TextFile

匹配文件格式,存留储作法为行存留储,数据资料不动手填充,文件系统数据量大,数据资料类比数据量大。可联结Gzip、Bzip2加进(种系统则会检查,拒绝执行核对时则会解压缩),但加进这种作法,填充后的副本不支持者split,Hive不时会对数据资料展开切分,从而只能对数据资料展开并行操作作法。并且在诬蔑一个通用更进一步之中,必须全都字符断定是不是逗号和行结束符,因此诬蔑一个通用数据量时会比SequenceFile极低几十倍。

2、SequenceFile

SequenceFile是Hadoop API提供的一种二进制副本支持者,存留储作法为行存留储,其具加进方便、可日后分、可填充的特性。

SequenceFile支持者三种填充必需:NONE,RECORD,BLOCK。Record填充率更极低,一般要求加进BLOCK填充。

军事优势是副本和hadoop api之中的MapFile是相互兼容的

3、RCFile

存留储作法:数据资料按行区块,每块按列于存留储。联结了行存留储和列于存留储的特性:

首先以,RCFile 应有同一行的数据资料位于同一端口,因此bit重为构的数据量很更极低;

其次,像列于存留储一样,RCFile 都能利用列于的点的数据资料填充,并且能日后多可不要的列于写入;

4、ORCFile

存留储作法:数据资料按行区块 每块按照列于存留储。

填充快、更快列于存留取。

生产成本比rcfile极低,是rcfile的改良修订版。

小结:

相比起TEXTFILE和SEQUENCEFILE,RCFILE由于列于式存留储作法,数据资料写入时性能损耗更大,但是具很差的填充比和核对响应。

数据资料仓库的特性是一次写入、多次写入,因此,主体来看,RCFILE相比起其余两种文件格式具较明显的军事优势。

13、Hive列于于联系核对,如何妥善解决数据资料弧度的关按键问题?

1)弧度原因:map可用数据资料按key Hash的扣除到reduce之中,由于key特有种不平滑、经营范围数据资料本身的特、建列于于时考虑不周、等原因引致的reduce 上的数据资料量差异性过大。(1)key特有种不平滑; (2)经营范围数据资料本身的特性; (3)建列于于时考虑不周; (4)某些SQL运算符本身就有数据资料弧度;

如何尽量避免:对于key为自在产生的数据资料弧度,可以对其作诗予一个随机绝对值。

2)妥善框架

(1)匹配通气: hive.map.aggr = true hive.groupby.skewindata=true

有数据资料弧度的时候展开增益最大化,当选项设定位true,转化的核对计划案时会有两个MR Job。第一个MR Job之中,Map的可用结果集合时会随机特有种到Reduce之中,每个Reduce动手部份催化操作作法,并可用结果,这样处置的结果是不同的Group By Key有不不算可能被试加进有所不同的Reduce之中,从而超过增益最大化的目的;第二个MR Job日后根据预处置的数据资料结果按照Group By Key 特有种到 Reduce 之中(这个更进一步可以应有不同的 Group By Key 被特有种到同一个Reduce之中),先以从前完毕事与愿违的催化操作作法。

(2)SQL 运算符通气:

① 配上join key特有种最平滑的列于于作为驱动列于于。动手好列于裁剪和filter操作作法,以超过两列于于动手join 的时候,数据资料量相对来说增加的功效。 ② 大小列于于Join: 加进map join让小的的点列于于(1000 条以下的据信条数)先以进文件种系统留。在map故又称完毕reduce。 ③ 大列于于Join大列于于: 把自在绝对值的key替换成一个字符串加上随机数,把弧度的数据资料分到有所不同的reduce上,由于null 绝对值联系不上,处置后极为极为需影响事与愿违结果。 ④ count distinct大量不同特殊绝对值: count distinct 时,将绝对值为自在的持续性实质上处置,如果是量化count distinct,可以无需处置,极为需填充,在先以从前结果之中加1。如果还有其他量化,需展开group by,可以先以将绝对值为自在的据信实质上处置,日后和其他量化结果展开union。

14、Fetch捕捉

Fetch捕捉是指,Hive之中对某些持续性的核对可以可无需到MapReduce量化。例如:SELECT * FROM employees;在这种持续性,Hive可以直观地写入employee完全不同的存留储目录下的副本,然后可用核对结果到操作员。

在hive-default.xml.template副本之中hive.fetch.task.conversion匹配是more,外公修订版hive匹配是minimal,该种类修订为more自此,在一个种系统查找、队列于查找、limit查找等都不丢下mapreduce。

15、小列于于、大列于于Join

将key相对来说分散,并且数据资料量小的列于于放入join的左边,这样可以有效地增大文件种系统留溢出错误暴发的比率;日后进一步,可以加进Group让小的的点列于于(1000条以下的据信条数)先以进文件种系统留。在map故又称完毕reduce。

也就是说试验发掘出:新版的hive仍然对小列于于JOIN大列于于和大列于于JOIN小列于于展开了简化。小列于于放入左边和右边仍然不能明显差别。

16、大列于于Join大列于于

1)自在KEY填充 有时join受罚是因为某些key完全不同的数据资料不算多,而不同key完全不同的数据资料都时会发送到不同的reducer上,从而导致文件种系统留以致于。此时我们无论如何都对这些异常的key,很多持续性,这些key完全不同的数据资料是异常数据资料,我们需在SQL运算符之中展开填充。例如key完全不同的队列于为自在。2)自在key转放 有时虽然某个key为自在完全不同的数据资料很多,但是除此以外的数据资料不是异常数据资料,www.atguigu.com 必须要相关联在join的结果之中,此时我们可以列于于a之中key为自在的队列于作诗一个随机的绝对值,使得数据资料随机平滑地分仅有所不同的reducer上。

17、Group By

匹配持续性,Map期中同一Key数据资料试用给一个reduce,当一个key数据资料过大时就弧度了。

极为是所有的催化操作作法都需在Reduce故又称完毕,很多催化操作作法都可以先以在Map故又称展开部份催化,先以从前在Reduce故又称推论事与愿违结果。1)启动时Map故又称催化匹配设置 (1)否在Map故又称展开催化,匹配为True hive.map.aggr = true (2)在Map故又称展开催化操作作法的条目比例 hive.groupby.mapaggr.checkinterval = 100000 (3)有数据资料弧度的时候展开增益最大化(匹配是false) hive.groupby.skewindata = true

当选项设定为 true,转化的核对计划案时会有两个MR Job。第一个MR Job之中,Map的可用结果时会随机特有种到Reduce之中,每个Reduce动手部份催化操作作法,并可用结果,这样处置的结果是不同的Group By Key有不不算可能被试加进有所不同的Reduce之中,从而超过增益最大化的目的;

第二个MR Job日后根据预处置的数据资料结果按照Group By Key特有种到Reduce之中(这个更进一步可以应有不同的Group By Key被特有种到同一个Reduce之中),先以从前完毕事与愿违的催化操作作法。

18、Count(Distinct) 去重为统计

数据资料量小的时候全然,数据资料量大的持续性,由于COUNT DISTINCT操作作法需用一个Reduce Task来完毕,这一个Reduce需处置的数据资料量不算大,就时会导致整个Job很难完毕,一般COUNT DISTINCT加进先以GROUP BY日后COUNT的作法替放

尽量尽量避免笛卡尔紧,join的时候一味on必需,或者作废的on必需,Hive持续性下加进1个reducer来完毕笛卡尔紧

推荐阅读:

大数据资料整合之Hive SQL内置formula_

大数据资料整合技术-Hive实战

大数据资料培训历年来Hive调优熟练

大数据资料整合之Hive调优熟练

南京皮肤病医院怎么去
柳州男科专科医院哪家好
北京白癜风检查
北京眼科医院
佛山妇科医院哪家更好

上一篇: 护理职业基础教育品牌智杰基础教育获希达资本Pre-A战略投资

下一篇: 国内首例!协和医院完成国产单孔机器人内科手术

友情链接