写点什么

HIVE 中临时表创建

作者:编程江湖
  • 2021 年 12 月 22 日
  • 本文字数:753 字

    阅读完需:约 2 分钟

在我们编写 SQL 时候,常常需要使用到临时表。 然后我们根据这个临时表,进行之后的操作,但是创建临时表有一定的开销。

1.WITH 创建临时表如果这个临时表并不需要保存,并且下文只需要用有限的几次,我们可以采用下面的方法。

with as 也叫做子查询部分,首先定义一个 sql 片段,该 sql 片段会被整个 sql 语句所用到,为了让 sql 语句的可读性更高些,作为提供数据的部分,也常常用在 union 等集合操作中。

with as 就类似于一个视图或临时表,可以用来存储一部分的 sql 语句作为别名,不同的是 with as 属于一次性的,而且必须要和其他 sql 一起使用才可以!

其最大的好处就是适当的提高代码可读性,而且大数据培训如果 with 子句在后面要多次使用到,这可以大大的简化 SQL;更重要的是:一次分析,多次使用,这也是为什么会提供性能的地方,达到了“少读”的目标。

WITH t1 AS (        SELECT *        FROM carinfo    ),     t2 AS (        SELECT *        FROM car_blacklist    )SELECT *FROM t1, t2复制代码
复制代码

注意:

1.1 这里必须要整体作为一条 sql 查询,即 with as 语句后不能加分号,不然会报错。

1.2 with 子句必须在引用的 select 语句之前定义,同级 with 关键字只能使用一次,多个只能用逗号分割

1.3 如果定义了 with 子句,但其后没有跟 select 查询,则会报错!

1.4 前面的 with 子句定义的查询在后面的 with 子句中可以使用。但是一个 with 子句内部不能嵌套 with 子句!

2.temporary 创建临时表

create temporary table 临时表表名 as select * from 表名复制代码
复制代码

2.1.创建的临时表仅仅在当前会话可见,数据会被暂存到 hdfs 上,退出当前会话表和数据将会被删除

2.2.如果临时表的命名的表名和 hive 的表名一样,当前会话则会查询临时表的数据,用户在这个会话内将不能使用原表,除非删除或者重命名临时表

2.3. 临时表不支持分区字段,不支持创建索引。

用户头像

编程江湖

关注

IT技术分享 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
HIVE中临时表创建