当前位置: 首页 > news >正文

hive3.1核心源码思路

系列文章目录

大数据主要组件核心源码解析

文章目录

  • 系列文章目录
    • 大数据主要组件核心源码解析
  • 前言
  • 一、HQL转化为MR 核心思路
  • 二、核心代码
    • 1. 入口类,生命线
    • 2. 编译代码
    • 3. 执行代码
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

对大数据几个核心组件的源码,记录一下生命线


提示:以下是本篇文章正文内容,下面案例可供参考

一、HQL转化为MR 核心思路

在这里插入图片描述

二、核心代码

1. 入口类,生命线

CliDriver.mainrun()executeDriver()cli.processLine(ss.execString);--hive -e 和 hive读取命令CliDriver.processLine()List<String> commands = splitSemiColon(line);processCmd(command);processLocalCmd(cmd, proc, ss)if (proc instanceof IDriver) IDriver qp = (IDriver) proc;qp.run(cmd)Driver.run()runInternal(command, alreadyCompiled:false);compileInternal(command, true); --关键代码1:编译sqlexecute();                      --关键代码2: 执行hql

2. 编译代码

--关键代码1:编译sqlDriver.compileInternal(command, true); compile(command, true, deferClose);  ASTNode tree = ParseUtils.parse(command, ctx);  --解析器工作// Do semantic analysis and plan generationBaseSemanticAnalyzer sem = SemanticAnalyzerFactory.get(queryState, tree); --编译器、优化器工作sem.analyze(tree, ctx);// get the output schemaschema = getSchema(sem, conf);plan = new QueryPlan(queryStr, sem, perfLogger.getStartTime(PerfLogger.DRIVER_RUN), queryId, queryState.getHiveOperation(), schema);

3. 执行代码

	 --关键代码2: 执行hql		   Driver.execute(); TaskRunner runner = launchTask(task, queryId, noName, jobname, jobs, driverCxt);TaskRunner tskRun = new TaskRunner(tsk);tskRun.start();TaskRunner.run()runSequential()tsk.executeTask(ss == null ? null : ss.getHiveHistory());--tsk的各种实现类运行  ExecDriver(MR任务的driver类) 、CopyTask, DDLTask, MapRedTask等int retval = execute(driverContext);	--不同的task实现执行ExecDriver(MR任务的driver类) mr任务构造、提交

总结

提示:这里对文章进行总结:

对核心流程,生命线进行追踪。

学习源码:核心思路,抓大放小。
把上面的生命线抓住,需要分析具体问题再细看。

http://www.lryc.cn/news/188940.html

相关文章:

  • LATR:3D Lane Detection from Monocular Images with Transformer
  • 什么是UI自动化测试工具?
  • 计算顺序表中值在100到500之间的元素个数
  • 【问题总结】级数的括号可以拆吗?
  • 抖音自动养号脚本+抖音直播控场脚本
  • uvm中transaction的response和id的解读
  • 第四节(1):EXCEL中判断一个WORD文件是否被打开
  • java.util.concurrent.locks.Condition详解
  • 选择适合变更管理的产品开发工具的要点和建议
  • 小程序 词云图 echarts-for-weixin-wordcloud
  • VScode配置Jupyter
  • java模拟GPT流式问答
  • 【好玩】如何在github主页放一条贪吃蛇
  • 顶顶通ASR安装配置说明
  • VMware和别的服务器 ,组建局域网那些事 。
  • 自监督DINO论文笔记
  • 计算机视觉: 基于隐式BRDF自编码器的文生三维技术
  • 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测
  • Java队列相关面试题
  • 水库大坝除险加固安全监测系统解决方案
  • android native C++编程实现数据库加密sqlcipher
  • 第五节 C++ 循环结构(算法)
  • 接口与抽象类的区别
  • 短视频账号矩阵系统源码saas===独立部署
  • 香港专用服务器拥有良好的国际网络连接
  • IP/SIP网络有源吸顶喇叭 20W扬声器 可供POE供电
  • 基于Keil a51汇编 —— 程序模板文件以及规则
  • 案例研究 | 玉湖冷链基于JumpServer实现管理安全一体化
  • JavaEE初阶学习:HTTP协议和Tomcat
  • ASEMI整流桥GBU810参数,GBU810封装