Hive的执行生命周期

1.入口$HIVE_HOME/bin/ext/cli.sh

  • 调用org.apache.hadoop.hive.cli.CliDriver类进行初始化过程
  • 处理-e,-f,-h等信息,如果是-h,打印提示信息,并退出
  • 读取hive的配置文件和.hiverc文件,设置HiveConf
  • 创建一个控制台,进入交互模式

2.读取命令processLine分割处理

  • 在交互模式下,读取输入命令行,直到";"为止。
  • 然后提交给processLine方法处理,该方法将输入以";"分割成多个命令,
  • 然后交给processCmd(cmd)处理

3.命令的预处理processCmd

  根据输入命令的第一个记号(Token),分别进入相应的流程

  • Quit/Exit系统正常退出
  • !开头的执行Linux操作系统命令
  • source 开头的读取外部文件并执行文件中的命令
  • list 列出缓存中的jar/file/archive
  • 其他命令提交给CommandProcess处理

4.命令的预处理CommandProcess

  根据输入命令的第一个记号,分别进行处理

  • set 调用SetProcess类,设置hive的环境参数,并保存在该进程的HiveConf中
  • dfs 调用DfsProcess类,调用hadoop的shell接口,执行hadoop的相关命令
  • add 调用AddResourceProcess类,导入外部的资源,只对该进程有效
  • delete 与add对应,删除资源   * 其他:提交给Driver类,进行下一步处理

5.命令的处理(Driver类的run方法)

  • 编译compile(Hive的核心部分)
  • 通过语言识别工具Antlr,验证语句的合法性
  • 将sql转换成一个抽象语法树(AST)
  • 定义树解释器Operator,将AST翻译成逻辑操作树
  • 调用genMapRed方法,生成物理执行计划
  • 获取读写锁:对操作的表获取一个读写锁acquireReadWriteLocks
  • 执行execute:将生成的Task提交hadoopAPI 处理,返回任务的执行时间和状态(成功or失败)

6.获取执行的结果

  • 任务执行失败,抛出异常
  • 执行成功后,调用Driver的GetReuslt方法,顺序打开每一个输出文件
  • 获取每一行的输出,并打印到控制台

7.执行清理

  • 清理hive执行过程中的中间文件和临时文件
  • 退出该条命令的执行,返回控制台并等待下一条命令的输入
时间: 2024-10-16 22:00:37

Hive的执行生命周期的相关文章

MVC笔记 网址路由与MVC的生命周期

一.网址路由 1.1  比对通过浏览器传来的HTTP请求 客户端对ASP.NET网站发出请求时,能通过R偶汤尼盖找到适当的HttpHandler来处理网页,大致的流程如图: 如果HttpHandler是由MvcHandler来处理,那么,此时就会进入MVC的执行生命周期,并且会找到适当的Controller与Action来对其进行处理,并将信息反馈给客户端. 1.2 将适当的网址返回浏览器 网址路由的另一个用途是决定MVC 应该输出什么样的网址并将其返回浏览器,跳转地址或在View中显示超链接时

Android Activity生命周期以及Fragment生命周期的区别与分析

Android Fragment生命周期图: Activity生命周期图: 对照图: Fragment生命周期分析: 1. 当一个fragment被创建的时候,它会经历以下状态. onAttach() onCreate() onCreateView() onActivityCreated() 2. 当这个fragment对用户可见的时候,它会经历以下状态. onStart() onResume() 3. 当这个fragment进入“后台模式”的时候,它会经历以下状态. onPause() onS

android四大基础组件--Service生命周期详解

android四大基础组件--ServiceService 生命周期详解 1.Service的生命周期: I> 在非绑定Service情况下,只有oncreate(),onStartCommand(),onDestory()方法情况下:  操作方法对应生命周期一: a.[执行startService(Intent)] 执行生命周期方法:oncreate()--->onStartCommand(): b.[执行stopService(Intent)] 执行生命周期方法:onDestory();

[转]Android生命周期

转自:http://www.cnblogs.com/shaweng/archive/2012/07/03/2575302.html 三个循环 提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出,在这个图中包含了两层循环, 第一层循环是onPause -> onResume -> onPause, 第二层循环是onStop -> onResta

(Android学习系列)二,窗口(Activity)的生命周期

在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onStop() protected void onRestart() protected void onDe

Activity生命周期以及launchMode对生命周期的影响

本文主要描述一下Activty的生命周期,以及launchMode对生命周期的影响,onNewIntent,onSaveInstanceState,onRestoreInstanceState方法何时调用 Activity生命周期图 下面对上图Activity的生命周期进行一下描述 1,启动Activity,系统会先调用onCreate方法,然后调用onStart方法,然后调用onResume方法,此时Activity处于运行状态,此时用户可以看到该Activity对应的界面,界面可以与用户进行

Maven学习笔记之——三套生命周期

Maven学习笔记之--三套生命周期 Maven命令的输入往往就对应了生命周期.比如mvncompile就表示执行默认生命周期阶段compile.Maven的生命周期是抽象的.其实际行为都是由插件完成的.比如mvncompile就可能会由maven-compile-plugin完成.生命周期和插件是协同工作. 1.    何为生命周期 项目构件中进行的清理.编译.测试及部署都可以视作一个一个项目的生命周期.但是每个项目每个人都有不一样的顺序不一样的实现方式.没有统一性带来的不方便已经不言而喻.

Activity生命周期以及启动模式对生命周期的影响

前天用户体验反馈的一个需求,要求每次进入应用都定位到首页;这个操作很明显不适合放在首页Activity(启动模式为SingleTask)的onResume中,如果对Activity的启动模式和生命周期熟悉,那么很容易想到在onNewIntent里操作就可以了,这样在应用内跳转不至于每次都定位到首页. 可见,对Activity生命周期和启动模式进行一下梳理很有必要.下面主要描述一下Activty的生命周期,以及launchMode对生命周期的影响,onNewIntent,onSaveInstanc

React 源码剖析系列 - 生命周期的管理艺术

目前,前端领域中 React 势头正盛,很少能够深入剖析内部实现机制和原理. 本系列文章 希望通过剖析 React 源码,理解其内部的实现原理,知其然更要知其所以然. 对于 React,其组件生命周期(Component Lifecycle)是它的核心概念,本文从源码入手,来剖析 React 生命周期的管理艺术. 阅读本文需要对 React 有一定的了解,如果你不知何为组件的生命周期,请详读 React 生命周期的文档. 如果你对 React 组件的生命周期存在些许疑惑,如生命周期如何顺序管理: