hive中的增刪改如何實現

2021-08-08 02:22:30 字數 2289 閱讀 6333

hive 是建立在 hadoop 上的資料倉儲基礎構架。它提供了一系列的工具,可以用來進行資料提取轉化載入(etl),這是一種可以儲存、查詢和分析儲存在 hadoop 中的大規模資料的機制。由於 hive 是針對資料倉儲應用設計的,而資料倉儲的內容是讀多寫少的。因此,hive 中不支援對資料的改寫和新增,所有的資料都是在載入的時候中確定好的。而資料庫中的資料通常是需要經常進行修改的,因此可以使用 insert into ...  values 新增資料,使用 update ... set 修改資料。但是隨著雲計算和hadoop的發展越來越多的傳統系統需要雲化,這其中必然涉及到資料的增刪改查,如何根據hive的特點實現相應的功能是不能迴避的,以下就是本人在hive改造oracle儲存過程中的解決辦法。

update語法:

insert overwrite table tablename1 [partition (partcol1=val1)] 

select [column]...,[update data]...  from from_statement 

insert overwrite table tablename1 [partition (partcol1=val2)] 

select [column]...  from [tablename1 left outer join (select [column] ... from from_statement) on equality_expression ( and equality_expression )*  where [right table column is null] [where where_condition]]

insert overwrite table tablename2 [partition (partcol1=val)]

select * from tablename1 where partition_name=』va1』 or partition_name=val2;

eg:a表資料如下

id(string)        name(string)

1 aaa

2                       bbb

3                       ccc

要求更新2       bbb為2         ddd

hive指令碼如下(tmp_a為分割槽表):

insert overwrite table tmp_a partition (p='one') select id,"ddd" from a where id = 2;

insert overwrite table tmp_a partition (p='two') select a.id,a.name from a a left outer join (select id from tmp_a where name='one') b on (a.id=b.id) where b.id is null: 

insert overwrite table a select * from tmp_a where p='one' or p='two';

delete語法:

insert overwrite table tablename1 [partition (partcol1=val1, partcol2=val2 ...)] select_statement1 from from_statement 

[where where_condition] 

[join table]

eg:a表資料如下

id(string)        name(string)

1                      aaa

2                       bbb

3                       ccc

要求刪除2        bbb

hive指令碼如下:

insert overwrite table a select id,name from a where id !=2;

add語法

通過分割槽增加。

如果目標表不是分割槽表則需要借助中間表,將目標表中的資料放入中間表的乙個分割槽,然後將要增加的資料放入中間表的另乙個分割槽,然後:insert overwrite table 

目標表select中間表的

兩個分割槽的資料。

如果目標表有分割槽則直接將要增加的資料放入目標表的乙個分割槽。

如果要增加的資料來自hive表則用insert overwrite ....  select ...語句將資料放入目標表分割槽

如果要增加的資料來自檔案則用load data.... tablename partition...

hive的簡單增刪改查

安裝好hive後,開啟hadoop的目錄,可以看到,比之前多了乙個tmp資料夾,同時user目錄下也多了乙個hive資料夾 一 建表及插入 資料準備 在本地準備乙個word.txt檔案,內容如下 1 小明 2 小張 3 小美 4 小李 5 小宋 6 小曲 7 小樊 8 小曲 9 小樊 10 小明 1...

如何登陸Mysql,實現增刪改查

1 使用 create table 語句可完成對錶的建立,create table 的建立形式 create table 表名稱 列宣告 以建立 people 表為例,表中將存放 學號 id 姓名 name 性別 年齡 age 這些內容 create table people id int unsi...

MyBatis 七 增 刪 改的實現

事務回滾 如果在乙個事務中某個sql執行事務,希望回到事務的原點,保證資料庫資料的完整性。在mybatis中預設是關閉了jdbc的自動提交功能。1 每乙個sqlsession預設都是不自動提交事務 2 session.commit 提交事務 3 opensession true 自動提交。setau...