Hive Fetch的原理

本文详细介绍了Hive的Fetch功能,旨在避免对于简单查询的低效MapReduce执行。从入口 CliDriver 开始,深入解析读取文件的流程,包括读取切片和行的细节,以及如何保存结果。通过FetchOperator、InputFormatSplit和RecordReader等组件,展示了Hive如何直接读取和处理数据,最后在ListSinkOperator中保存结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Hive将SQL转为MapReduce执行,但是对于简单的查询,使用MapReduce的效率太低,于是开发了fetch功能来避免MR的执行。
网上有大量的文章介绍了如何使用,却少有介绍其原理的,于是自己debug学习了一下整理成笔记分享出来。

流程

入口

由于我使用的是hive的cli进行debug,所以会先进入CliDriver,关于这个环节更详细的介绍可以参考Hive 源码解析之 Hive 基本框架和执行入口
在这里插入图片描述

读取文件

读取切片

  • InputFormatSplit
    虽然避免了MR计算,读取文件依旧是无法避免的。Hive针对fetch的任务自定义了一类InputFormatSplit
    在这里插入图片描述
    FetchInputFormatSplit在FetchOperator的getNextSplits中被创建出来,这个方法应该是读取文件返回切片构成的数组。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值