hive 資料寫入

2021-10-14 15:25:19 字數 1982 閱讀 2276

hive表中資料的寫入主要有 insert  into(overwrite) values 、 insert ... select 、 load 、 create table as select ... datatable 這幾種方式。其中hive從0.14版本開始支援 insert into table values (line data)的形式。

建表的方式

從頭建表和從已有表中建表

--  方式一 從頭建表此表

drop table if exists zw;

-- 這個表示覆蓋原來已有的這個表,直接刪掉原有的zw了

create table zw(user_id bigint, accounts string, change_type string, golds bigint, log_time int);

desc zw;

-- 檢視表的屬性,會顯示 表中的屬性情況等

-- 方式二 從已有的表中建表,同時將資料寫入了新錶中了。

drop table if exists zw;

create table zw as

select user_id as id, accounts as ac , change_type as type, golds as money, log_time as time

from existtableacc;

將資料直接通過insert 插入

insert into table zw values(3645356,'wds7654321(4171752)','新人註冊獎勵',1700,1526027152);
insert into table zw select * from golds_log_tmp where id >=10;
從 已有資料的表golds中選取符合指定條件的資料插入之前存在的表zw 。

create table golds_log(user_id bigint, accounts string, change_type string, golds bigint, log_time int) row format delimited fields terminated by '|'
上文**中row format delimited fields terminated by '|',說明表的字段由符號「|」進行分隔而每條記錄的預設是用 空格分割的。準備要匯入的檔案:golds_log.txt。

檔案內容為:

3645356|wds7654321(4171752)|新人註冊獎勵|1700|1526027152 2016869|dqyx123456789(2376699)|參加一場比賽|1140|1526027152 3630468|dke3776611(4156064)|大轉盤獎勵|1200|1526027152 

將這個檔案上傳至linux的檔案系統下,比如說 /root/tmp/golds_log.txt。然後執行下面的命令進行匯入:

hive> load data local inpath '/root/tmp/golds_log.txt' into table golds_log; loading data to table test.golds_log ok time taken: 0.657 seconds

因為golds_log.txt中包含有中文,確保檔案格式是utf-8(gb2312匯入後會有亂碼)。

你會發現使用load語句寫入資料比insert語句要快許多倍,因為hive並不對scheme進行校驗,僅僅是將資料檔案挪到hdfs系統上,也沒有執行mapreduce作業。所以從匯入資料的角度而言,使用load要優於使用insert...values。

附錄:如何檢視hive 版本: 直接在命令列中輸入hive 啟動是,會看到lib下的相應執行檔案,就代表著版本。下圖為0.13

鳴謝:

將hdfs資料寫入hive

下面來嘮嘮怎麼將hdfs裡的資料寫入到hive裡。要將資料寫入hive裡,那麼hive裡得有存放資料表得位置,因此,第一步,是在hive裡建立新的表來儲存來自hdfs的資料,這裡有兩個注意 1 新建的表應該跟hdfs裡面資料表一致,指定列名 2 建立 式應一致,具體就是指row format del...

NIFI 檔案資料寫入hive

目的 nifi使用背景 希望借助nifi監控某個目錄,能夠將被監控目錄下的資料檔案採集並寫入hive中去。nifi提供了puthiveql puthivestreaming putsql三種processor,這三種processor對flowfile的要求也不盡相同。本文選用了如下圖1所示的幾種p...

pyspark讀取hive資料寫入到redis

1 首先把redis包引入工程,這樣就不需要在集群裡每台機器上安裝redis客戶端。pip install redis cd usr local lib python3.6 dist packages 找到自己環境的路徑 zip r redis.zip redis hdfs dfs put redi...