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部落格