乐趣区

关于hive:HIVE-中临时表创建

在咱们编写 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. 长期表不反对分区字段,不反对创立索引。

退出移动版