网络上搜索到的结果,都是说with as可以有缓存数据,减少表扫描,优化速度的作业,其实并不是这样,以下通过实验分析和证明

写一个很简单的语句:

with t as(
select regexp_replace(reflect("java.util.UUID", "randomUUID"), "-", "") AS id --生成一个随机id
,'andy' as name
)
select * from t
union all
select * from t
;

执行结果:

结果中可以看到,产生了两个不一样的id,说明reflect函数被执行了两次,即with as中的子查询被执行了两次。

再来看下执行计划:

hive (bi)> > explain > with t as(> select regexp_replace(reflect("java.util.UUID", "randomUUID"), "-", "") AS id --生成一个随机id> ,'andy' as name> ) > select * from t> union all> select * from t> ;
OK
Explain
STAGE DEPENDENCIES:Stage-1 is a root stageStage-0 depends on stages: Stage-1STAGE PLANS:Stage: Stage-1SparkDagName: root_20190620153535_78057156-80df-4c9b-8c8e-f896ad4d74ed:53Vertices:Map 1 Map Operator Tree:TableScanalias: _dummy_tableRow Limit Per Split: 1Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETESelect Operatorexpressions: regexp_replace(reflect('java.util.UUID','randomUUID'), '-', '') (type: string), 'andy' (type: string)outputColumnNames: _col0, _col1Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETEFile Output Operatorcompressed: trueStatistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: COMPLETEtable:input format: org.apache.hadoop.mapred.TextInputFormatoutput format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormatserde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDeMap 2 Map Operator Tree:TableScanalias: _dummy_tableRow Limit Per Split: 1Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETESelect Operatorexpressions: regexp_replace(reflect('java.util.UUID','randomUUID'), '-', '') (type: string), 'andy' (type: string)outputColumnNames: _col0, _col1Statistics: Num rows: 1 Data size: 1 Basic stats: COMPLETE Column stats: COMPLETEFile Output Operatorcompressed: trueStatistics: Num rows: 2 Data size: 2 Basic stats: COMPLETE Column stats: COMPLETEtable:input format: org.apache.hadoop.mapred.TextInputFormatoutput format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormatserde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDeStage: Stage-0Fetch Operatorlimit: -1Processor Tree:ListSinkTime taken: 0.063 seconds, Fetched: 50 row(s)

从执行计划中可以看到,产生了两个map。

所以说,with as是不能减少表扫描的。

为了对比,将以上语句稍作修改,然后在oracle中执行。结果如下:

可以看到在oracle中,sys_guid()函数只被执行了一次。

关于hive中的with as 语法相关推荐

  1. HIVE中的表以及语法

    2019独角兽企业重金招聘Python工程师标准>>> HIVE中的表以及语法 一.HIVE的表 HIVE使用的功能性的表格分为四种:内部表.外部表.分区表.分桶表. 1.内部表.外 ...

  2. hive 中 order by、sort by、distribute by 、cluster by 区别

    1. select 语法 Hive 中的 SELECT 基础语法和标准SQL语法基本一致,支持 WHERE.DISTINCT.GROUP BY.ORDER BY.HAVING.LIMIT.子查询等.语 ...

  3. Hive中的排序语法

    ORDER BY hive中的ORDER BY语句和关系数据库中的sql语法相似.他会对查询结果做全局排序,这意味着所有的数据会传送到一个Reduce任务上,这样会导致在大数量的情况下,花费大量时间. ...

  4. Hive的基本操作-基本查询语法

    Hive 查询语法 SELECT SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE w ...

  5. Spark SQL来读取现有Hive中的数据

    Spark SQL主要目的是使得用户可以在Spark上使用SQL,其数据源既可以是RDD,也可以是外部的数据源(比如Parquet.Hive.Json等). Spark SQL的其中一个分支就是Spa ...

  6. Hive中JOIN的使用入门

    Hive中join的用法 Hive中Join的通常使用有以下几种: inner join 等值连接 left join  right join  full join left semi join cr ...

  7. Hive中的算术运算符:位运算符解释

    Hive中的位运算符运用不多,可能大部分人也不少很熟悉,其实就是将两个数值转为位相应的二进制,在相应位上进行与.或.反.异或操作: 1. 位与操作: & 语法: A & B 操作类型: ...

  8. hive 中某个字段等于0_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  9. hive中如何把13位转化为时间_重要知识点收藏 | Hive常用函数大全

    关系运算 1.等值比较: = 语法:A=B 操作类型:所有基本类型 描述: 如果表达式A与表达式B相等,则为TRUE:否则为FALSE 举例: hive>select 1 from lxw_du ...

最新文章

  1. HDU2853(最大权完美匹配)
  2. 【面向工业界】推荐算法工程师培养计划
  3. 十六进制转byte变负数
  4. 手机内置摄像头接线图解_苹果手机,二手价格如何?
  5. Qt字符串与整形转换
  6. 联发科mtk手机处理器怎么样_5G手机价格将再探新低!联发科天玑700芯片发布:入门级5G处理器...
  7. PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP
  8. sun jdk 与jdk_Sun过去的世界中的JDK 11和代理
  9. Neo4j:收集多个值
  10. dart 乘方运算符_Dart系列-运算符
  11. 卡尔曼滤波和粒子滤波最直白的解释
  12. 用API获取IP地址
  13. Elasticsearch优化原理
  14. 基因重组-冲刺日志(第一天)
  15. (收藏)盘点阿里巴巴 15 款开发者工具
  16. C++如何实现二进制数据存储为灰度图
  17. Brave浏览器或许是你打开元宇宙的正确方式
  18. 从NIB中加载VIEW
  19. CISA-信息系统审计流程-抽样方法
  20. 烧写APM板的bootloader

热门文章

  1. 美白-用通道计算实现人物祛斑美白
  2. paddlepaddle 13 迁移学习中的卷积基加强训练方法-RIFLE
  3. iOS开发中的数学函数
  4. 骏安产业一站式解决企业纳税筹划方面的痛点
  5. cadence导入网表时报错
  6. 内容付费和知识付费的关系
  7. wget安装,wget: 无法解析主机地址
  8. 【计算机网络】ip地址、分类及什么样的ip主机地址可以分配给主机使用
  9. 周更计划----web安全学习
  10. PHP个人博客系统开发历程