hadoop - Hive 阶段 MapReduce

标签 hadoop hive

我是 Hive 新手。我没有什么疑问。

  1. 我想知道 Hive 如何将查询转换为 MapReduce 作业?

  2. 我查看了解释命令,它给了我一个阶段计划并且 依赖关系。我想了解各个阶段的详细信息。这些阶段如何 被定义?

  3. 如何控制 MapReduce 的执行。假设我想改变 减少连接到 map 侧连接。

最佳答案

在抽象层面上,当您在 hive 中执行查询时会发生以下情况

  1. 解析查询并创建抽象语法树
  2. 然后将 AST 转换为 MapReduce 任务的 DAG
  3. 然后为每个 MapReduce 任务创建一个 Runnable。
  4. MapReduce 任务将被序列化为 xml 文件(存储在/tmp/hive-${user.name}/)
  5. 执行引擎将反序列化此 xml 文件并执行任务

我希望这能回答您的问题 1 和 2。您可以从 here 阅读更多内容。

对于问题 3,我相信如果可能的话,hive 会自动进行映射端连接。检查HIVE-3784
在此之前,您必须在 hive 查询中给出提示才能进行映射端连接。看这个link

要了解有关 Hive 中联接如何工作的更多信息,请参阅此 link

关于hadoop - Hive 阶段 MapReduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25761032/

相关文章:

java - 在Hadoop的MapReduce程序中运行Jar文件时出错

hadoop - 当我使用自己的 TableInputFormat 时 TableMapper 出现 ClassNotFoundException

java - 如何在java mapreduce hadoop中获得两个键的最大计数

apache-spark - Spark 错误和hadoop错误

hadoop - hive :动态分区

hadoop - Hive 选择查询中列名中的特殊字符 "#"

hadoop - 配置单元将文件加载到表副本

java - 无法从Object转换为IntWritable

regex - Hadoop Hive与Python正则表达式等效

r - 将 hive 连接到R时出现java.lang.classnotfoundexception错误