我是 Hive 新手。我没有什么疑问。
我想知道 Hive 如何将查询转换为 MapReduce 作业?
我查看了解释命令,它给了我一个阶段计划并且 依赖关系。我想了解各个阶段的详细信息。这些阶段如何 被定义?
如何控制 MapReduce 的执行。假设我想改变 减少连接到 map 侧连接。
最佳答案
在抽象层面上,当您在 hive 中执行查询时会发生以下情况
- 解析查询并创建抽象语法树
- 然后将 AST 转换为 MapReduce 任务的 DAG
- 然后为每个 MapReduce 任务创建一个 Runnable。
- MapReduce 任务将被序列化为 xml 文件(存储在/tmp/hive-${user.name}/)
- 执行引擎将反序列化此 xml 文件并执行任务
我希望这能回答您的问题 1 和 2。您可以从 here 阅读更多内容。
对于问题 3,我相信如果可能的话,hive 会自动进行映射端连接。检查HIVE-3784
在此之前,您必须在 hive 查询中给出提示才能进行映射端连接。看这个link
要了解有关 Hive 中联接如何工作的更多信息,请参阅此 link
关于hadoop - Hive 阶段 MapReduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761032/