由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行。不包含聚合和连接的简单SELECT语句可以使用一个单独的只包含Map阶段的任务实现。使用GROUP BY子句的聚合可以使用一个独立的MapReduce任务实现。包含大量多表连接的复杂查询需要依靠多个MapReduce任务的顺序执行来实现。

    HiveQL编译器的操作分为好几个阶段。

    在第一个阶段中,查询语句被解析并转化成抽象的语法树。随后语法树将被传给语义分析器,在这一过程中,通过使用元数据存储中的信息来判别列名和数据类型。

语义分析器将它们转化并生成一种内部的表达方式,然后传递给逻辑计划生成器,在这里将生成一颗逻辑操作树。在逻辑计划经过数次的传递和优化之后,它将被送往物理计划生成器。经过物理计划生成器和处理之后,将产生一张DAG(有向无环图)用以生成最终的MapReduce任务。

本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6105080.html,如需转载请自行联系原作者

Hadoop Hive概念学习系列之HiveQL编译基础(十)相关推荐

  1. Hadoop Hive概念学习系列之hive的正则表达式初步(六)

    说在前面的话 hive的正则表达式,是非常重要!作为大数据开发人员,用好hive,正则表达式,是必须品! Hive中的正则表达式还是很强大的.数据工作者平时也离不开正则表达式.对此,特意做了个hive ...

  2. Hadoop Hive概念学习系列之hive里的HiveQL——查询语言(十五)

    Hive的操作与传统关系型数据库SQL操作十分类似. Hive主要支持以下几类操作: DDL 1.DDL:数据定义语句,包括CREATE.ALTER.SHOW.DESCRIBE.DROP等. 详细点, ...

  3. Hadoop Hive概念学习系列之hive的数据压缩(七)

    Hive文件存储格式包括以下几类: 1.TEXTFILE 2.SEQUENCEFILE 3.RCFILE 4.ORCFILE 其中TEXTFILE为默认格式,建表时不指定默认为这个格式,导入数据时会直 ...

  4. Hadoop Hive概念学习系列之HDFS、Hive、MySQL、Sqoop之间的数据导入导出(强烈建议去看)(十八)...

    把MySQL里的数据导入到HDFS 1.使用MySQL工具手工导入 把MySQL的导出数据导入到HDFS的最简单方法就是,使用命令行工具和MySQL语句. 为了导出整个数据表或整个数据库的内容,MyS ...

  5. Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)

    调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs  *** 的形式!!! 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme:/ ...

  6. Hadoop HBase概念学习系列之HRegion服务器(三)

    所有的数据库数据一般是保存在Hadoop分布式系统上面的,用户通过一系列HRegion服务器获取这些数据.一台机器上一般只运行一个HRegion服务器,而且每一分区段的HRegion也只会被一个HRe ...

  7. Hadoop HDFS概念学习系列之shell命令使用HDFS的一些其他命令(十九)

    其他相关命令还包括以下这些: NameNode  -format :  格式化DFS文件系统 secondaryNameNode :   运行DFS的SecndaryNameNode进程 NameNo ...

  8. Hadoop HDFS概念学习系列之HDFS升级和回滚机制(十二)

    不多说,直接上干货! HDFS升级和回滚机制 作为一个大型的分布式系统,Hadoop内部实现了一套升级机制,当在一个集群上升级Hadoop时,像其他的软件升级一样,可能会有新的bug或一些会影响现有应 ...

  9. Hadoop HDFS概念学习系列之两个和HDFS读写操作最为密切的Hadoop包(二十)

    是org.apache.hadoop.fs和org.apache.hadoop.conf. fs包主要是文件系统的抽象,可以理解为支持多种文件系统实现的统一文件访问接口: conf用于读conf包,就 ...

最新文章

  1. 宏基因组分析技术研讨会第5期-最后3个名额,下周开课
  2. Acwing第 6 场周赛【未完结】
  3. RHCS套件实现高可用负载均衡集群(三)——共享存储
  4. 深度神经网络实践:车牌识别
  5. 【最简便解法】1066 图像过滤 (15分)
  6. 条件变量实现线程同步
  7. Qt工作笔记-使用qrand与QTime产生随机数
  8. python判断今天周几_Python如何根据日期判断周几
  9. 微软是如何使用C#重写C#编译器并将其开源的
  10. 变相裁员?人人车发奇葩通知:未离职员工每天打卡三次 只抄规则
  11. SourceInsight下面一直出现unable to write to temp file for saving operation 这样的提示
  12. CloudStack 4.4+KVM之通过ISO文件创建CentOS虚拟机
  13. access 江苏计算机二级_计算机二级考试都要考些什么?
  14. 养成女友?我训练出了一个“杨超越”聊天机器人
  15. Mysql-slowlog
  16. 关于Arduino下载并添加DHT11库文件的详细教程
  17. USB转RS232串口线-交叉线or直连线
  18. ptp精准时间协议_PTP时钟协议原理
  19. 【奈茶君】STM32F407驱动WS2812
  20. 【SSL】2022.5.2 1125.集合

热门文章

  1. STM32应用笔记转载
  2. C#中5中timer的比较
  3. Spring for Apache Hadoop 1.0发布
  4. Flex 传JAVA BEAN 到后台 JAVA
  5. C#与vb6 com组件的互相调用方法
  6. log4net简单配置与应用
  7. [django]Django输出页面方式的补充
  8. JAVA线程池_并发队列工作笔记0001---认识阻塞队列_非阻塞队列
  9. Python工作笔记007---win10安装Python3.7.3_以及用pycharm创建Python项目_以及对System interpreter理解
  10. JAVA学习笔记001---认识了解NIO