我最近在接受公司采访时遇到了一些问题。由于我是Hadoop的新手,有谁能告诉我正确的答案?
问题:
请为我提供一些有用的资源,以便我能够以更好的方式学习。感谢
答案 0 :(得分:5)
PFB答案:
答。 SORT BY对每个reducer的数据进行排序,它提供了reducer中行的排序。如果有多个减速器,“排序依据”可能会给出部分有序的最终结果。 而GROUP BY按指定列聚合记录,允许您在非分组列(例如SUM,COUNT,AVG等)上执行聚合功能。
答。我认为Reducer会起作用,因为根据Hive文档 - Limit表示要返回的行数。返回的行是随机选择的。以下查询随机返回t1中的5行。
SELECT * FROM t1 LIMIT 5
必须随机选择,必须从Reducer获得完整的结果输出。
答。这些链接应该回答这个
答。 “内部表”也称为管理表,是由Hive管理的表。将HDFS中的数据指向此表时,数据将移至Hive默认位置/ ust / hive / warehouse /。然后,如果删除了这样的内部表,则会删除数据。
另一方面,“外部表”是用户管理的,加载后数据不会移动到hive默认目录,即可以指定任何自定义位置。连续地,当您删除此类表时,不会删除任何数据,只会删除表模式。
答。 Hive是一个位于hadoop之上的Datawarehousing层,它为用户提供类似于行表接口的SQL,用于分析底层数据。它采用HiveQL(HQL)语言,基于SQL-92标准。
SQL是用于访问和操作数据库的标准RDBMS语言。
答案 1 :(得分:0)
我也是Hadoop和Hive的新手,所以我无法给你一个完整的答案。
根据我在“Hadoop The Definitive Guide”一书中所读到的,Hive和SQL之间的主要区别在于Hive(HiveQL)是在考虑MapReduce的情况下创建的。 Hive的SQL方言应该让人们更容易与Hadoop交互,而无需了解很多关于Java的知识(无论如何,SQL都为数据专业人员所熟知)。
随着时间的推移,Hive变得更加符合SQL标准。它混合了MySQL和Oracle的SQL方言与SQL-92。
主要差异
根据我的阅读,最大的区别是RDBMS的架构通常是架构写。这意味着在数据库中加载数据时,数据需要符合模式。在Hive中,它在读取上使用模式,因为它在加载时不会验证数据。
从 Hadoop获取的信息权威指南
非常好的书,并对所涉及的所有技术进行了很好的概述。
编辑:
对于外部和内部表格,请查看此回复:
Difference between Hive internal tables and external tables?
有关排序依据和分组依据的信息
排序方式:
Hive使用SORT BY中的列对行进行排序,然后将行提供给reducer。排序顺序取决于列类型。如果列是数字类型,则排序顺序也是数字顺序。如果列是字符串类型,则排序顺序将是字典顺序。
排序方式与排序方式之间的差异
(取自提供的链接,这可能有助于Group By和Sort By之间的区别)
Hive支持SORT BY,它对每个reducer的数据进行排序。 “order by”和“sort by”之间的区别在于前者保证输出中的总顺序,而后者仅保证在reducer中排序。如果有多个减速器,“排序依据”可能会给出部分有序的最终结果。
注意:单个SORT BY和CLUSTER BY之间的区别可能会令人困惑。不同之处在于CLUSTER BY按字段分区,如果有多个reducers分区,则为SORT BY,以便在reducers之间统一分配数据(和加载)。
基本上,每个reducer中的数据将根据用户指定的顺序进行排序。
分组依据:
Group By使用聚合完成。它几乎与你在其他任何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_users.gender并从users表中计算不同的user_ids。为了统计性别中的用户,您首先必须将所有特定性别的用户组合在一起。 (根据下面的链接从组中查询)
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+GroupBy
有关优化Hive性能的信息
http://hortonworks.com/blog/5-ways-make-hive-queries-run-faster/
优化联接
https://www.facebook.com/notes/facebook-engineering/join-optimization-in-apache-hive/470667928919/
一般Hive性能提示
https://streever.atlassian.net/wiki/display/HADOOP/Hive+Performance+Tips
一些额外资源
SQL to Hive Cheat Sheet
http://hortonworks.com/wp-content/uploads/downloads/2013/08/Hortonworks.CheatSheet.SQLtoHive.pdf
Hive LIMIT文档
祝你好运!
答案 2 :(得分:0)
从Hive 0.10.0开始,如果设置了任务对话hive.fetch.task.conversion = more,那么简单的select语句(例如从表名LIMIT n中选择column_name)可以避免map reduce。
答案 3 :(得分:0)
1。 Hive中“排序依据”和“分组依据”之间的区别。它们如何工作?
2。如果我们在Hive中的任何SQL查询中使用“限制1”,则Reducer是否可以工作。
3。如何优化Hive性能?
使用Tez会话
使用存储分区和分区
使用Orc文件格式
使用矢量化
使用CBO 4。 “内部表”和“外部表”之间的区别
内部表:配置单元中存储的元数据和数据。如果删除表,则会自动删除整个架构和数据。
外部表:仅元数据由配置单元处理。数据由用户处理。如果删除表,则只会删除架构,数据保持不变。对于创建外部表,需要在create语句中使用external关键字,还需要指定放置数据的位置。
5。 Hive和SQL之间的主要区别是什么
答案 4 :(得分:-2)
Reducer将不会运行。
select * from table_name limit 5;