hive3.1核心源码思路

系列文章目录

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

文章目录


前言

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

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


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

一、HQL转化为MR 核心思路

二、核心代码

1. 入口类,生命线

c 复制代码
CliDriver.main
    run()
	 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:编译sql
				  execute();                      --关键代码2: 执行hql

2. 编译代码

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

3. 执行代码

c 复制代码
	 --关键代码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任务构造、提交

总结

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

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

学习源码:核心思路,抓大放小。

把上面的生命线抓住,需要分析具体问题再细看。

相关推荐
得物技术2 天前
从埋点需求到规则资产:Hermes Agent 重构得物数仓工作流
大数据·llm·ai编程
久美子2 天前
AI驱动数仓建设的Harness工程实践——本体建模、知识分层与上下文工程
大数据
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
大志哥1233 天前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
果丁智能3 天前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
王小王-1233 天前
基于 Hive 的网易云音乐数据分析及可视化系统
hive·hadoop·数据分析·音乐数据分析·网易云音乐分析·hive音乐分析·hadoop网易云
ApacheSeaTunnel3 天前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步
weixin_397574093 天前
PDF复杂表格的1:1还原引擎:跨页表格自动拼接技术实战
大数据·人工智能·pdf
极光代码工作室3 天前
基于数据仓库的电商数据分析平台
大数据·hadoop·python·spark·数据可视化
秋名山码民3 天前
Graph RAG 深度解析:从向量检索到知识推理的技术演进
大数据·人工智能·rag