在hive中建好錶之後,需要將資料載入進來,以便做後續查詢分析,本文介紹向hive表中載入資料的幾種方式。
如果你的資料已經在hdfs上存在,已經為結構化資料,並且資料所在的hdfs路徑不需要維護,那麼可以直接在建表的時候使用location指定資料所在的hdfs路徑即可。
比如:
create [external] table t_lxw1234 (
day string,
url string)
row format delimited
fields terminated by ' '
stored as textfile
location '/tmp/lxw1234/';
這裡內部表和外部表都可以指定,但需要注意,如果是內部表,那麼在drop該錶的時候,同時會將location所指定的目錄一起刪除。
如果資料在本地,或者hdfs的某乙個目錄下,需要載入到目標中或分割槽中,那麼使用load data命令即可載入資料:
load data local inpath『/home/lxw1234/t_lxw1234/』
into table t_lxw1234 partition (day = 『2015-06-15』);
load data inpath『/user/lxw1234/t_lxw1234/』
into table t_lxw1234 partition (day = 『2015-06-15』);
這個比較簡單,就是將乙個查詢結果插入到目標表或分割槽中:
insert overwrite table t_lxw1234 partition (day = 『2015-06-15』)
select day,url from source_table;
這裡也介紹一下從hive中匯出資料到檔案系統(hdfs和本地檔案系統)。
語法為:
insert overwrite [local] directory directory1
[row format row_format] [stored as file_format]
select ... from ...
如果指定了local關鍵字,則為匯出到本地檔案系統,否則,匯出到hdfs。
使用row format關鍵字可以指定匯出的檔案分隔符,比如:
insert overwrite local directory '/tmp/lxw1234/'
row format delimited fields terminated by ','
select * from t_lxw1234;
該語句將t_lxw1234表的所有資料匯出到本地檔案系統/tmp/lxw1234/目錄,欄位間的分隔符為逗號。
cat /tmp/lxw1234/000000_0
2015-05-10,url1
2015-05-10,url2
2015-06-14,url1
2015-06-14,url2
2015-06-15,url1
2015-06-15,url2
更多關於hive資料載入和匯出的介紹,請參考官方文件:
一起學hive系列
—-hive概述,hive是什麼
—-hive函式大全-完整版
—-hive中的資料庫(database)和表(table)
—-hive的安裝配置
—-hive的檢視和分割槽
—-hive的動態分割槽
hive分析函式系列
hive索引
hive優化之——控制hive任務中的map數和reduce數
一起學Hive 之七 向Hive表中載入資料
在hive中建好錶之後,需要將資料載入進來,以便做後續查詢分析,本文介紹向hive表中載入資料的幾種方式。如果你的資料已經在hdfs上存在,已經為結構化資料,並且資料所在的hdfs路徑不需要維護,那麼可以直接在建表的時候使用location指定資料所在的hdfs路徑即可。比如 create exte...
一起學Hive 之六 Hive的動態分割槽
前面文章介紹了hive中是支援分割槽的。關係型資料庫 如oracle 中,對分割槽表insert資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中,hive中也提供了類似的機制,即動態分割槽 dynamic partition 只不過,使用hive的動態分割槽,需要進行相應的配置。...
一起學Hive 之六 Hive的動態分割槽
hive hive動態分割槽 前面文章介紹了hive中是支援分割槽的。關係型資料庫 如oracle 中,對分割槽表insert資料時候,資料庫自動會根據分割槽欄位的值,將資料插入到相應的分割槽中,hive中也提供了類似的機制,即動態分割槽 dynamic partition 只不過,使用hive的動...