一起學Hive 之七 向Hive表中載入資料

2021-08-22 11:42:09 字數 1640 閱讀 1336

在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表中載入資料的幾種方式。如果你的資料已經在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的動...