自己如何制作一个网页,seo软件开发,查询网站访问量,wordpress 增加作者系列文章目录
大数据主要组件核心源码解析 文章目录 系列文章目录大数据主要组件核心源码解析 前言一、HQL转化为MR 核心思路二、核心代码1. 入口类#xff0c;生命线2. 编译代码3. 执行代码 总结 前言
提示#xff1a;这里可以添加本文要记录的大概内容#xff1a;
对大…系列文章目录
大数据主要组件核心源码解析 文章目录 系列文章目录大数据主要组件核心源码解析 前言一、HQL转化为MR 核心思路二、核心代码1. 入口类生命线2. 编译代码3. 执行代码 总结 前言
提示这里可以添加本文要记录的大概内容
对大数据几个核心组件的源码记录一下生命线 提示以下是本篇文章正文内容下面案例可供参考
一、HQL转化为MR 核心思路 二、核心代码
1. 入口类生命线
CliDriver.mainrun()executeDriver()cli.processLine(ss.execString);--hive -e 和 hive读取命令CliDriver.processLine()ListString commands splitSemiColon(line);processCmd(command);processLocalCmd(cmd, proc, ss)if (proc instanceof IDriver) IDriver qp (IDriver) proc;qp.run(cmd)Driver.run()runInternal(command, alreadyCompiledfalse);compileInternal(command, true); --关键代码1编译sqlexecute(); --关键代码2 执行hql2. 编译代码
--关键代码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的各种实现类运行 ExecDriverMR任务的driver类 、CopyTask, DDLTask, MapRedTask等int retval execute(driverContext); --不同的task实现执行ExecDriverMR任务的driver类 mr任务构造、提交总结
提示这里对文章进行总结
对核心流程生命线进行追踪。
学习源码核心思路抓大放小。 把上面的生命线抓住需要分析具体问题再细看。