Hive程式設計指南 學習筆記(三) 資料操作

2021-08-28 17:36:41 字數 3186 閱讀 1477

一、向管理表中裝載資料

hive沒有行級別的資料插入、更新和刪除操作,往表中裝載資料的唯一途徑就是使用一種「大量」的資料裝載操作。

load:向表中裝載資料

(1)把目錄『/usr/local/data』下的資料檔案中的資料裝載進usr表,並覆蓋原有資料:load data local inpath 『/usr/local/data』 overwrite into table usr;

(2)把目錄『/usr/local/data』下的資料檔案中的資料裝載進usr表, 不覆蓋原有資料:load data local inpath 『/usr/local/data』  into table usr;

(3)把分布式檔案系統目錄'hdfs://master_server/usr/local/data』下的資料檔案資料裝載進usr表,並覆蓋原有資料:load data inpath 『hdfs://master_server/usr/local/data』 overwrite into table usr;

舉例:

load data local inpath '$/california-employees' # $表示home環境變數

into table employees

partition (country='us',state='ca');

如果分割槽目錄不存在,會先建立分割槽目錄,然後將資料拷貝到該目錄下。

如果目標是非分割槽表,語句中應該省略partition子句。

二、通過查詢語句向表中插入資料

insert:通過查詢語句向表中插入資料

(1)向表usr1中插入來自usr表的資料並覆蓋原有資料:insert overwrite table usr1 select * from usr where age=10;

(2)向表usr1中插入來自usr表的資料並追加在原有資料後:insert into table usr1 select * from usr where age=10;

舉例:

insert overwrite table employees

partition (country='us',state='or')

select * from staged_employees se

where se.cnty = 'us' and se.st = 'or';

如果staged_employees表非常大,而且使用者需要對65個州執行這些語句,意味著需要掃瞄staged_employees表65次。可以只掃瞄一次staged_employees表,然後按多種方式進行劃分(可以混合使用insert overwrite和insert into):

from staged_employees se

insert overwrite table employees

partition (country='us',state='or')

select * where se.cnty = 'us' and se.st = 'or'

insert overwrite table employees

partition (country='us',state='ca')

select * where se.cnty = 'us' and se.st = 'ca'

...;

三、動態分割槽插入基於查詢引數推斷出需要建立的分割槽名稱,用於建立非常多的分割槽。

insert overwrite table employee

partition (country,state)

select ...,se.cnty,se.st #根據select語句中最後2列確定分割槽欄位country和state的值

from staged_employees se;

也可以混合使用動態和靜態分割槽,靜態分割槽必須出現在動態分割槽鍵之前:

insert overwrite table employee

partition (country='us',state)

select ...,se.cnty,se.st

from staged_employees se

where se.cnty='us';

動態分割槽功能預設是關閉的。開啟後,預設是以「嚴格」模式執行,這種模式下要求至少有一列分割槽欄位是靜態的,有助於防止因設計錯誤導致產生大量的分割槽。

四、單個查詢語句中建立表並載入資料

不能用於外部表。

create table ca_employees

as select name,salary,address

from employees

where se.state='ca';

五、匯出資料

如果資料檔案恰好是需要的格式,只需要拷貝資料夾或檔案:

hadoop fs -cp source_path target_path
否則,可以使用insert ... directory...:

insert overwrite local directory '/tmp/ca_employees'

select name,salary,address

from employees

where se.state='ca';

可以指定多個輸出資料夾目錄:

from staged_employees se

insert overwrite directory '/tmp/or_employees'

select * where se.cnty = 'us' and se.st = 'or'

insert overwrite directory '/tmp/ca_employees'

select * where se.cnty = 'us' and se.st = 'ca'

...;

Hive程式設計指南 學習筆記01

第四章 hql的資料定義 1 建立資料庫 create database financials create database if not exists financials 2 檢視資料庫 show databases 模糊查詢資料庫 show databases like h.3 建立資料庫修...

hive程式設計指南之資料型別

hive裡有兩種資料型別即 基本資料型別以及集合資料型別 一 基本資料型別 1,tinyint 1byte有符號整數 2,smalint 2byte有符號整數 3,int 4byte有符號整數 4,bigint 8byte有符號整數 5,boolean 布林型別,true或者false 6,floa...

《Hive程式設計指南》之Hive環境安裝

hive 1 解壓 2 配置 hadoop home hive home等環境變數 3 修改配置檔案hive conf cp hive default.xml.template hive site.xml 修改hive.metastore.schema.verification的值為false 建立...