Hive的數據導入: 1.從本地文件系統中導入數據到Hive表 基礎語法1 : create table 表名(列名1 數據類型, 列名2 數據類型, … …) row format delimited fields terminated by '分隔符' stored as textfile 參數 ...
Hive的數據導入:
1.從本地文件系統中導入數據到Hive表
基礎語法1 :
create table 表名(列名1 數據類型, 列名2 數據類型, … …) row format delimited fields terminated by '分隔符' stored as textfile
參數解釋:
row format delimited --設置創建的表在載入數據的時候,支持的列分隔符
fields terminated by '分隔符' --指明具體的分隔符
stored as '數據類型' --設置載入數據的類型,預設textfile(純文本)
基礎語法 2:
load data local inpath '本地文件完整路徑' into table 表名
代碼示例:
create table hospital(hospitalid string, hcount double, hallcost double, hreimbursecost double, hcure double, hday double, hrecovery double, ocount double, ohallcost double, ohreimbursecost double, ocure double, ohrecovery double) row format delimited fields terminated by '\t' stored as textfile;
load data local inpath '/home/hadoop/part-r-00000' into table hospital;
2.從HDFS中導入數據到Hive表
基礎語法:
建表語句同上
load data inpath 'hdfs文件完整路徑' into table 表名
代碼示例:
load data inpath '/guide/hospitaloutput/part-r-00000' into table hospital;
3.從別的表中查詢出相應的數據並導入到Hive表中
基礎語法:
建表語句同上
insert into table 目標表名 select * from 源表名; //不覆蓋數據
insert overwrite table 目標表名 select * from 源表名; //覆蓋數據
4.在創建表的時候通過從別的表中查詢出相應的記錄並插入到所創建的表中
基礎語法:
create table 新表名 as select * from 舊表名
新建表的結構和數據都和源表一致
5.導入數據到帶有分區的表
基礎語法:
建表語句同上
alter table 表名 add partition(分區1='值1',分區2='值2',... ...); //添加具體分區(子文件夾)
load data local inpath '本地文件路徑' into table 表名 partition(分區1='值1',分區2='值2',… …);
註意事項:
分區文件夾需要在使用前創建
分區也是列名
分區2是分區1的子文件夾,以此類推
導入數據時,並不按照具體的值篩選
6.導入數據到帶有桶的表
註意事項: 需要設置環境變數:set hive.enforce.bucketing=true;
示例代碼:
create table hospitalcopy5(hospitalid string, hcount double, hallcost double, hreimbursecost double, hcure double, hday double, hrecovery double, ocount double, ohallcost double, ohreimbursecost double, ocure double, ohrecovery double) clustered by(hospitalid) into 2 buckets row format delimited fields terminated by '\t' stored as textfile;
insert overwrite table hospitalcopy6 select * from hospital;