我最近在一家公司面试时遇到了一些问题。由于我是hadoop的新手,有人能告诉我正确的答案吗?问题:Hive中“排序方式”和“分组方式”之间的区别。他们是怎么工作的?如果我们在配置单元中的任何sql查询中使用“limit1”,那么reducer是否有效。如何优化配置单元性能?“内表”与“外表”的区别hive和sql的主要区别是什么请给我提供一些有用的资源,以便我能更好地学习。谢谢
5sxhfpxr1#
在hive0.10.0中,如果设置了task conversation hive.fetch.task.conversion=more,那么简单的select语句(例如select column\u name from table name limit n)可以避免map reduce
lf3rwulv2#
pfb答案:
ans.sort by sorts每个reducer对数据进行排序,它提供reducer中行的排序。如果有多个减速机,“排序方式”可能会给出部分排序的最终结果。而groupby按指定列聚合记录,这允许您对未分组的列(如sum、count、avg等)执行聚合函数。
答:我认为reducer可以工作,因为根据hive文档--limit指示要返回的行数。返回的行是随机选择的。下面的查询随机返回t1中的5行。
SELECT * FROM t1 LIMIT 5
必须随机挑选,它必须有完整的结果输出从减速机。
答案。这些链接应该回答这个问题5种让配置单元查询运行更快的方法使用配置单元查询语言进行高效配置单元查询的5个技巧
ans.“内部表”也称为托管表,是由配置单元管理的表。当您将hdfs中的数据指向这样的表时,数据将移动到hive default location/ust/hive/warehouse/。并且,如果删除了这样的内部表,则数据将与删除一起被删除。另一方面,“外部表”是用户管理的,加载后数据不会移动到配置单元默认目录,即可以指定任何自定义位置。连续地,当您删除这样的表时,不删除任何数据,只删除表模式。
hive是hadoop之上的一个数据仓库层,它为用户分析底层数据提供了类似sql的行表接口。为此,它采用了hiveql(hql)语言,该语言松散地基于sql-92标准。sql是访问和操作数据库的标准rdbms语言。
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语句进行检查。selectfrom db.table order by column:使用缩减器或在有聚合时使用。查看下面的屏幕截图。三。如何优化配置单元性能?使用tez会话使用bucketing和partitioning使用orc文件格式使用矢量化使用cbo4。“内表”与“外表”的区别内部表:存储在配置单元中的元数据和数据。如果删除表,则会自动删除整个架构和数据。外部表:配置单元只处理元数据。数据由用户处理。如果删除表,则只删除模式,数据保持不变。要创建外部表,需要在create语句中使用external关键字,还需要指定放置数据的位置。5hive和sql的主要区别是什么hive是一个数据仓库工具,设计用于在hadoop上处理结构化数据,而sql用于在rdbms上处理结构化数据。
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+sortbyhttps://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-限制条款祝你面试好运!
e4eetjau5#
如果在select子句中使用limit,reducer将不会运行。从表5中选择*名称限制;
5条答案
按热度按时间5sxhfpxr1#
在hive0.10.0中,如果设置了task conversation hive.fetch.task.conversion=more,那么简单的select语句(例如select column\u name from table name limit n)可以避免map reduce
lf3rwulv2#
pfb答案:
1. Hive中“排序方式”和“分组方式”之间的区别。他们是怎么工作的?
ans.sort by sorts每个reducer对数据进行排序,它提供reducer中行的排序。如果有多个减速机,“排序方式”可能会给出部分排序的最终结果。而groupby按指定列聚合记录,这允许您对未分组的列(如sum、count、avg等)执行聚合函数。
2. 如果我们在配置单元中的任何sql查询中使用“limit1”,那么reducer是否有效。
答:我认为reducer可以工作,因为根据hive文档--limit指示要返回的行数。返回的行是随机选择的。下面的查询随机返回t1中的5行。
必须随机挑选,它必须有完整的结果输出从减速机。
-如何优化配置单元性能?
答案。这些链接应该回答这个问题
5种让配置单元查询运行更快的方法
使用配置单元查询语言进行高效配置单元查询的5个技巧
-“内表”与“外表”的区别
ans.“内部表”也称为托管表,是由配置单元管理的表。当您将hdfs中的数据指向这样的表时,数据将移动到hive default location/ust/hive/warehouse/。并且,如果删除了这样的内部表,则数据将与删除一起被删除。
另一方面,“外部表”是用户管理的,加载后数据不会移动到配置单元默认目录,即可以指定任何自定义位置。连续地,当您删除这样的表时,不删除任何数据,只删除表模式。
-hive和sql的主要区别是什么
hive是hadoop之上的一个数据仓库层,它为用户分析底层数据提供了类似sql的行表接口。为此,它采用了hiveql(hql)语言,该语言松散地基于sql-92标准。
sql是访问和操作数据库的标准rdbms语言。
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语句进行检查。
selectfrom db.table order by column:使用缩减器或在有聚合时使用。查看下面的屏幕截图。
三。如何优化配置单元性能?
使用tez会话
使用bucketing和partitioning
使用orc文件格式
使用矢量化
使用cbo4。“内表”与“外表”的区别
内部表:存储在配置单元中的元数据和数据。如果删除表,则会自动删除整个架构和数据。
外部表:配置单元只处理元数据。数据由用户处理。如果删除表,则只删除模式,数据保持不变。要创建外部表,需要在create语句中使用external关键字,还需要指定放置数据的位置。
5hive和sql的主要区别是什么
hive是一个数据仓库工具,设计用于在hadoop上处理结构化数据,而sql用于在rdbms上处理结构化数据。
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方言时的执行方式基本相同。
此查询选择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-限制条款
祝你面试好运!
e4eetjau5#
如果在select子句中使用limit,reducer将不会运行。
从表5中选择*名称限制;