searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Hive Driver 详解

2024-10-12 09:45:07
17
0

简介

Driver 实现了 IDriver 接口,该接口用于表示 Hive 查询的驱动程序接口。Hive 的驱动程序负责接收用户输入的 HiveQL 查询,编译查询计划,并将计划提交给执行引擎执行。IDriver 接口定义了与 Hive 驱动程序相关的方法,允许用户与 Hive 交互,执行查询并获取执行结果。

它有两个实现类,分别是 Driver ReExecDriver,后者实现了重执行的逻辑,具体执行还是由 Driver 类实现。

private Driver coreDriver;

ReExecDriver 源码如下,可以看到调用的确实是Driver.run()

shouldReExecute 方法源码如下,简单来说只要有一个 plugin 的shouldReExecute方法返回真,则 shouldReExecute 方法的返回值为真。

如果不更改HIVE_QUERY_MAX_REEXECUTION_COUNT的值,那么ReExecDriver和Driver没有什么区别,因为HIVE_QUERY_MAX_REEXECUTION_COUNT默认1,且executionIndex的初始值也是1,所以会直接返回cpr。

Driver 类执行一条 HQL 的调用链如下:

Driver#runInternal 方法源码如下,分为执行execute)和编译compileInternal)两个部分。

Driver#execute() 源码如下:

每个 Task 的执行是由 TaskRunner 类触发,Driver#launchTask 的返回值就是一个 TaskRunner 对象。

TaskRunner#runSequential() 方法的源码如下,核心是调用每个 Task 对象的 executeTask 方法,executeTask 方法定义在 Task 超类中,其中会调用各个子类的 execute 方法,进而触发具体的逻辑处理。

0条评论
0 / 1000
pancx
4文章数
0粉丝数
pancx
4 文章 | 0 粉丝
pancx
4文章数
0粉丝数
pancx
4 文章 | 0 粉丝
原创

Hive Driver 详解

2024-10-12 09:45:07
17
0

简介

Driver 实现了 IDriver 接口,该接口用于表示 Hive 查询的驱动程序接口。Hive 的驱动程序负责接收用户输入的 HiveQL 查询,编译查询计划,并将计划提交给执行引擎执行。IDriver 接口定义了与 Hive 驱动程序相关的方法,允许用户与 Hive 交互,执行查询并获取执行结果。

它有两个实现类,分别是 Driver ReExecDriver,后者实现了重执行的逻辑,具体执行还是由 Driver 类实现。

private Driver coreDriver;

ReExecDriver 源码如下,可以看到调用的确实是Driver.run()

shouldReExecute 方法源码如下,简单来说只要有一个 plugin 的shouldReExecute方法返回真,则 shouldReExecute 方法的返回值为真。

如果不更改HIVE_QUERY_MAX_REEXECUTION_COUNT的值,那么ReExecDriver和Driver没有什么区别,因为HIVE_QUERY_MAX_REEXECUTION_COUNT默认1,且executionIndex的初始值也是1,所以会直接返回cpr。

Driver 类执行一条 HQL 的调用链如下:

Driver#runInternal 方法源码如下,分为执行execute)和编译compileInternal)两个部分。

Driver#execute() 源码如下:

每个 Task 的执行是由 TaskRunner 类触发,Driver#launchTask 的返回值就是一个 TaskRunner 对象。

TaskRunner#runSequential() 方法的源码如下,核心是调用每个 Task 对象的 executeTask 方法,executeTask 方法定义在 Task 超类中,其中会调用各个子类的 execute 方法,进而触发具体的逻辑处理。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0