在 hadoop 中如何执行 hive 查询
Posted
技术标签:
【中文标题】在 hadoop 中如何执行 hive 查询【英文标题】:how hive query is executed in hadoop 【发布时间】:2017-03-27 12:24:10 【问题描述】:我需要知道 hive 查询是如何在 Hadoop 等分布式系统上执行的。我检查了其他问题,但没有一个详细解释。
我正在寻找完整的执行过程。正如我想知道为什么配置单元连接查询比简单的选择查询花费更多的时间。
哪位知道hive执行过程的,请解释一下。
PS:我使用 hortonworks 数据平台作为 Hadoop 框架。
【问题讨论】:
如果任何人都可以为配置单元查询过程提供良好文档的链接将非常有帮助。 【参考方案1】:用户提交的 SQL 查询由 Hive 转换为物理算子树,物理算子树经过优化转换为 Tez Jobs,然后在 Hadoop 集群上执行。在处理中间结果集时,Hadoop 中的分布式 SQL 查询处理不同于传统的关系查询引擎。 Hive 查询处理往往需要对中间结果集进行排序和重组;这在 Hadoop 用语中称为 shuffle。
Hive 中现有的大多数查询优化都是关于最小化洗牌成本。当前,用户必须向 Hive 提交具有正确连接顺序的优化查询,才能有效地执行查询。 Hive 中的逻辑优化仅限于过滤器下推、投影修剪和分区修剪。基于成本的逻辑优化可以显着改善 Apache Hive 的查询延迟和易用性。
加入重新排序和加入算法选择是少数可以从基于成本的优化器中受益的优化。基于成本的优化器将使用户不必以正确的顺序重新排列连接,或者不必通过使用查询提示和配置选项来指定连接算法。这可以让用户有可能将他们的报告和 ETL 需求建模为接近业务流程,而不必担心查询优化。
阅读wiki,它有你想要的。如果您有关于代码的具体问题,请发布您尝试过的内容以及您希望实现的内容。
【讨论】:
以上是关于在 hadoop 中如何执行 hive 查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在所有可用节点中运行 Hive mapreduce 任务?
使用 Hadoop YARN 在本地模式下运行 Hive 查询
Hive with Hadoop vs Hive with spark vs spark sql vs HDFS - 它们如何相互协作?