hive工作记录-20180513
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;
轉載于:https://www.cnblogs.com/qinshifu/p/9032294.html
總結
以上是生活随笔為你收集整理的hive工作记录-20180513的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hadoop28---netty传对象
- 下一篇: Python删除文件及进行文件夹压缩