hive3.1核心源码思路

这篇具有很好参考价值的文章主要介绍了hive3.1核心源码思路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

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


前言

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

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


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

一、HQL转化为MR 核心思路

hive3.1核心源码思路,hive,大数据

二、核心代码

1. 入口类,生命线

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. 编译代码

--关键代码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. 执行代码

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

总结

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

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

学习源码:核心思路,抓大放小。
把上面的生命线抓住,需要分析具体问题再细看。文章来源地址https://www.toymoban.com/news/detail-726930.html

到了这里,关于hive3.1核心源码思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hive3从入门到精通

    HDFS配置 启动Hadoop 检查MySQL是否启动成功 hive-env.sh hive-site.xml 需要修改的位置提炼如下: 注意:上面配置文件中的路径在 vi 编辑器下 全局替换 不要使用图形化 不然每次保存后3215行都会有个 #8 特殊字符 如果产生删除即可 具体报错信息 后面有单独的描述 上传 MySQL 连接驱动

    2024年02月04日
    浏览(78)
  • Hive3.1.3安装及部署

    目录 1 下载地址 2 安装部署 2.1 安装Hive 2.2 启动并使用Hive 2.3 MySQL安装 2.3.1 安装MySQL 2.3.2 配置MySQL 2.3.3 卸载MySQL说明 2.4 配置Hive元数据存储到MySQL 2.4.1 配置元数据到MySQL 2.4.2 验证元数据是否配置成功 2.4.3 查看MySQL中的元数据 2.5 Hive服务部署 2.5.1 hiveserver2服务  2.5.2 metastore服务

    2024年02月09日
    浏览(39)
  • Hive3 on Spark3配置

    大数据组件 版本 Hive 3.1.2 Spark spark-3.0.0-bin-hadoop3.2 OS 版本 MacOS Monterey 12.1 Linux - CentOS 7.6 1)Hive on Spark说明 Hive引擎包括:默认 mr 、 spark 、 Tez 。 Hive on Spark :Hive既作为存储元数据又负责SQL的解析优化,语法是HQL语法,执行引擎变成了Spark,Spark负责采用RDD执行。 Spark on Hive :

    2024年02月04日
    浏览(39)
  • centos7上hive3.1.3安装及配置

    hive是基于hadoop的数据仓库软件,部署运行在linux系统之上,安装之前必须保证hadoop环境运行正常,hive本身不是分布式软件,它的分布式主要是借助hadoop实现,存储是hdfs,计算是mapreduce。 需要同时安装apache-hive-3.1.3-bin.tar.gz和mysql-5.7.42-1.el7.x86_64.rpm-bundle.tar两个软件,因为hive的

    2024年02月09日
    浏览(42)
  • hadoop3.2.1+hive3.1.2-docker安装

    建立hadoop用的内部网络(此步出错,若与其它网段冲突,可省略) #指定固定ip号段 建立Master容器,映射端口 10000端口为hiveserver2端口,后面本地客户端要通过beeline连接hive使用,有其他组件要安装的话可以提前把端口都映射出来 若创建了网段则可指定网段运行 创建slave1 172.17.

    2024年02月08日
    浏览(39)
  • hive修改spark版本重新编译,hive3.1.3 on spark3.3.0

    我的是hive3.1.3 spark3.3.0(请先将自己的 hive on mr 搭建完场,有简单了解在搞这个) 1.下载hive源码 2. maven编译:mvn clean -DskipTests package -Pdist (idea 编译不行,能行的评论告诉我) 右键 - Git Bash idea打开项目,右键pom 添加成maven项目 修改pom中自己所需依赖的版本

    2023年04月21日
    浏览(50)
  • Java(115)Java通过jdbc接口连接hive3.1.2

    hive版本:3.1.2 jdbc:hive-jdbc-uber-2.6.5.0-292.jar 下载驱动地址:https://github.com/timveil/hive-jdbc-uber-jar/releases/tag/v1.9-2.6.5 CREATE TABLE regre_one.hive2_varchar( ID int, aes varchar(1000), sm4 varchar(1000), sm4_a varchar(1000), email varchar(1000), phone varchar(1000), ssn varchar(1000), military varchar(1000), passport varchar(1000)

    2024年02月05日
    浏览(50)
  • Ubuntu下安装Hive3.1.2教程(附MySQL安装方法及安装包)

    Hive 的安装需要建立在 Hadoop 的之上(类似于Hbase) ,关于 Hadoop 的单机安装以及伪分布式安装可以参考作者的另两篇博客: Ubuntu下单机安装Hadoop详细教程(附所需安装包下载) Ubuntu下伪分布式安装Hadoop详细教程 本文安装的 Hadoop 及 Java 环境基于林子雨老师的《大数据技术原

    2024年02月04日
    浏览(48)
  • [sqoop]hive3.1.2 hadoop3.1.1安装sqoop1.4.7

    Hadoop3.2.4+Hive3.1.2+sqoop1.4.7安装部署_hadoop sqoop安装_alicely07的博客-CSDN博客 sqoop-env.sh 末尾添加 环境变量 先创建目录,解决警告:accumulo does not exist! (1)添加jdbc驱动包:将MySQL数据库的JDBC驱动包mysql-connector-java-5.1.37.jar添加到Sqoop安装目录的lib目录中。 (2)删除Sqoop安装目录的

    2024年02月07日
    浏览(60)
  • 一百六十、Kettle——Linux上安装的Kettle9.2.0连接Hive3.1.2

    Kettle9.2.0在Linux上安装好后,需要与Hive3.1.2数据库建立连接 之前已经在本地上用kettle9.2.0连上Hive3.1.2 kettle9.2.0安装包网盘链接 链接:https://pan.baidu.com/s/15Zq9wNDwyMnc3qFVxYOMXw?pwd=zwae  提取码:zwae 1、Hive312的lib里面MySQL驱动包的版本是mysql-connector-java-5.1.37.jar 2、Kettle9.2里MySQL驱动包的

    2024年02月12日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包