天天看點

Hive insert插入資料與with子查詢1. insert into 與 insert overwrite差別2. insert 與 with as 子查詢一起使用

1. insert into 與 insert overwrite差別

         insert into 與 insert overwrite 都可以向hive表中插入資料,但是insert into直接追加到表中資料的尾部,而insert overwrite會重寫資料,既先進行删除,再寫入

注意:如果存在分區的情況,insert overwrite隻重寫目前分區資料,不會全部重寫

2. insert 與 with as 子查詢一起使用

當在hive中同時使用insert into(overwrite) table xx 與with子查詢時候,需要将insert放在with as子查詢後面

WITH TEMP_A AS (
		SELECT TIME,IOT_ID,NAME FROM IOT_XX_A
	),
    TEMP_B AS (
		SELECT TIME,IOT_ID,NAME,COUNT(DISTINCT IOT_ID) AS TIMES FROM TEMP_A
			GROUP BY TIME,IOT_ID,NAME
	)

INSERT INTO TABLE TABLE_B	
	SELECT TIME,IOT_ID,NAME,TIMES FROM TEMP_B
           

注意: 當使用以下語句建表時,需要将create放在with as子查詢前面

DROP TABLE IF EXISTS xx ;
CREATE TABLE xx AS
WITH TEMP_A AS (
		SELECT TIME,IOT_ID,NAME FROM IOT_XX_A
	),
    TEMP_B AS (
		SELECT TIME,IOT_ID,NAME,COUNT(DISTINCT IOT_ID) AS TIMES FROM TEMP_A
			GROUP BY TIME,IOT_ID,NAME
	)
SELECT TIME,IOT_ID,NAME,TIMES FROM TEMP_B
           

參考資料:

1. Hive踩過的坑-Hive的insert與with as 語句搭配 – 記憶角落

2. 一文搞定hive之insert into 和 insert overwrite與資料分區_su83362368的部落格-CSDN部落格