几个Hive面试问题

g0czyy6m  于 2021-05-29  发布在  Hadoop
关注(0)|答案(5)|浏览(310)

我最近在一家公司面试时遇到了一些问题。由于我是hadoop的新手,有人能告诉我正确的答案吗?
问题:
Hive中“排序方式”和“分组方式”之间的区别。他们是怎么工作的?
如果我们在配置单元中的任何sql查询中使用“limit1”,那么reducer是否有效。
如何优化配置单元性能?
“内表”与“外表”的区别
hive和sql的主要区别是什么
请给我提供一些有用的资源,以便我能更好地学习。谢谢

5sxhfpxr

5sxhfpxr1#

在hive0.10.0中,如果设置了task conversation hive.fetch.task.conversion=more,那么简单的select语句(例如select column\u name from table name limit n)可以避免map reduce

lf3rwulv

lf3rwulv2#

pfb答案:

1. Hive中“排序方式”和“分组方式”之间的区别。他们是怎么工作的?

ans.sort by sorts每个reducer对数据进行排序,它提供reducer中行的排序。如果有多个减速机,“排序方式”可能会给出部分排序的最终结果。而groupby按指定列聚合记录,这允许您对未分组的列(如sum、count、avg等)执行聚合函数。

2. 如果我们在配置单元中的任何sql查询中使用“limit1”,那么reducer是否有效。

答:我认为reducer可以工作,因为根据hive文档--limit指示要返回的行数。返回的行是随机选择的。下面的查询随机返回t1中的5行。

SELECT * FROM t1 LIMIT 5

必须随机挑选,它必须有完整的结果输出从减速机。

-如何优化配置单元性能?

答案。这些链接应该回答这个问题
5种让配置单元查询运行更快的方法
使用配置单元查询语言进行高效配置单元查询的5个技巧

-“内表”与“外表”的区别

ans.“内部表”也称为托管表,是由配置单元管理的表。当您将hdfs中的数据指向这样的表时,数据将移动到hive default location/ust/hive/warehouse/。并且,如果删除了这样的内部表,则数据将与删除一起被删除。
另一方面,“外部表”是用户管理的,加载后数据不会移动到配置单元默认目录,即可以指定任何自定义位置。连续地,当您删除这样的表时,不删除任何数据,只删除表模式。

-hive和sql的主要区别是什么

hive是hadoop之上的一个数据仓库层,它为用户分析底层数据提供了类似sql的行表接口。为此,它采用了hiveql(hql)语言,该语言松散地基于sql-92标准。
sql是访问和操作数据库的标准rdbms语言。

uttx8gqw

uttx8gqw3#

1Hive中“排序方式”和“分组方式”之间的区别。他们是怎么工作的?
排序方式:它在为map reduce作业定义的每个reducer中对结果进行排序。输出不一定是按顺序排列的,但是来自每个减速机的输出是按顺序排列的。检查下面的示例!我在11节点集群中运行了它。

分组方式:它有助于数据的聚合。sum()、count()、avg()、max()、min()、collect\u list()、collect\u set()都使用group by。这就像是根据相同的特征来判断结果。示例:有一个state列和population列,我们根据states进行聚合,然后会有29个不同的sum(population)值。
2如果我们在配置单元中的任何sql查询中使用“limit1”,那么reducer是否有效。
selectfrom db.table limit 1:语句从不包含减速机,可以使用explain语句进行检查。

select
from db.table order by column:使用缩减器或在有聚合时使用。查看下面的屏幕截图。

三。如何优化配置单元性能?
使用tez会话
使用bucketing和partitioning
使用orc文件格式
使用矢量化
使用cbo4。“内表”与“外表”的区别
内部表:存储在配置单元中的元数据和数据。如果删除表,则会自动删除整个架构和数据。
外部表:配置单元只处理元数据。数据由用户处理。如果删除表,则只删除模式,数据保持不变。要创建外部表,需要在create语句中使用external关键字,还需要指定放置数据的位置。
5hive和sql的主要区别是什么
hive是一个数据仓库工具,设计用于在hadoop上处理结构化数据,而sql用于在rdbms上处理结构化数据。

zpjtge22

zpjtge224#

我对hadoop和hive也是新手,所以我不能给你一个完整的答案。
从我在《hadoop权威指南》一书中读到的内容来看,hive和sql之间的关键区别在于,hive(hiveql)是在考虑mapreduce的情况下创建的。hive的sql方言应该可以让人们更容易地与hadoop交互,而不需要对java有太多了解(而且sql已经为数据专业人士所熟知)。
随着时间的推移,hive越来越符合sql标准。它混合了mysql和oracle的sql方言与sql-92。
主要区别
从我读到的内容来看,最大的区别在于rdbms具有典型的写模式。这意味着,当您将数据加载到数据库中时,它需要符合模式。在hive中,它在读取时使用schema,因为它在加载数据时不验证数据。
从hadoop获得的信息权威指南
这是一本非常好的书,它很好地概述了所有涉及的技术。
编辑:
对于外部和内部表,请查看以下响应:
配置单元内部表和外部表之间的区别?
有关排序方式和分组方式的信息
排序方式:
hive使用sort by中的列对行进行排序,然后将行馈送到reducer。排序顺序将取决于列类型。如果列是数字类型,则排序顺序也是数字顺序。如果列是字符串类型,那么排序顺序将是字典顺序。
排序方式和排序方式之间的区别
(摘自提供的链接,这可能有助于区分分组方式和排序方式)
hive支持按每个reducer对数据进行排序的sort。“order by”和“sort by”的区别在于前者保证输出的总顺序,而后者只保证减速机中行的顺序。如果有多个减速机,“排序方式”可能会给出部分排序的最终结果。
注意:对于单个列的单独排序和集群排序之间的区别可能会造成混淆。区别在于,按字段按分区进行集群,如果有多个reducer,则按随机分区进行排序,以便在reducer之间均匀地分布数据(和负载)。
基本上,每个reducer中的数据都将按照用户指定的顺序进行排序。
分组依据:
分组方式是使用聚合完成的。它的执行方式与使用任何其他sql方言时的执行方式基本相同。

INSERT OVERWRITE TABLE pv_gender_sum
    SELECT pv_users.gender, count (DISTINCT pv_users.userid)
    FROM pv_users
    GROUP BY pv_users.gender;

此查询选择pv\u users.gender并从users表中统计不同的用户标识。为了统计某个性别的用户,您首先必须将具有某个性别的所有用户分组在一起(通过下面的链接从组中获取查询)
https://cwiki.apache.org/confluence/display/hive/languagemanual+sortby
https://cwiki.apache.org/confluence/display/hive/languagemanual+groupby
有关优化配置单元性能的信息
http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/
优化联接
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919/
一般配置单元性能提示
https://streever.atlassian.net/wiki/display/hadoop/hive+performance+tips
一些额外的资源
sql到配置单元备忘表
http://hortonworks.com/wp-content/uploads/downloads/2013/08/hortonworks.cheatsheet.sqltohive.pdf
配置单元限制文档
https://cwiki.apache.org/confluence/display/hive/languagemanual+select#languagemanualselect-限制条款
祝你面试好运!

e4eetjau

e4eetjau5#

如果在select子句中使用limit,reducer将不会运行。
从表5中选择*名称限制;

相关问题