導航:首頁 > 數據處理 > hive如何刪數據文件

hive如何刪數據文件

發布時間:2022-10-03 20:48:07

⑴ hive表的類型有哪些

Hive 的表有哪些類型呢,我們簡單可以分為四種,受控表、外部表、分區表、桶表,從嚴格意義上說,應該分為兩種受控表,又叫內部表、外部表,分區表和桶表其實是受控表的不同體現。

1、受控表

所謂受控表,我們也經常叫內部表,和外部表對應起來,就是說表的數據的生命周期收表的控制,當表定義被刪除的時候,表中的數據隨之一並被刪除。創建一張表,其對應在hive中就有了表記錄,在metastore表TBLS中就有表定義,當我們一旦從hive中刪除一張表的定義之後,其表中的數據也就不復存在了,在metastore中的定義也就不存在了。

2、外部表

和受控表相對的,怎麼相對呢,你的內部表的數據的生命周期受表定義的影響不是,外部表的不是這樣的,數據的生命周期, 或者說數據存在與否和表的定義互不約束,表中的數據呢,只是表對hdfs上相應文件的一個引用而已,當刪除表定義的時候,表中的數據依然存在。
3、分區表

假設伺服器集群每天都產生一個日誌數據文件,把數據文件統一存儲到HDFS中。我們如果想查詢某一天的數據的話,hive執行的時候會對所有文件都掃描一遍,判斷是否是指定的日期。可以讓日期作為一個子目錄。當hive查詢的時候,根據日期去判斷子目錄。然後掃描符合條件的子目錄中的數據文件。

4、桶表

桶表是對數據進行哈希取值,然後放到不同文件中存儲。分桶是將數據及分解成更容易管理的若幹部分的另一種技術。如果進行表連接操作,那麼就需要對兩張表的數據進行全掃描。非常耗費時間。可以針對連接欄位進行優化。分桶這種情況下呢,對於相似的表中的數據進行比較的話就非常的方便了,只要對比相應的桶中的數據就可了。

⑵ hive中怎麼刪除表中的部分數據

Hive的數據管理:

(1)元數據存儲

Hive 將元數據存儲在 RDBMS 中,有三種模式可以連接到資料庫

Single User Mode:此模式連接到一個 In-memory 的資料庫 Derby,一般用於 Unit Test。

Multi User Mode:通過網路連接到一個資料庫中,這是最常用的模式。

Remote Server Mode:用於非 Java 客戶端訪問元資料庫,在伺服器端啟動一個 MetaStoreServer,客戶端則利用 Thrift 協議通過 MetaStoreServer來訪問元資料庫。

(2)數據存儲

首先,Hive 沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由地組織 Hive 中的表,只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,它就可以解析數據了。

其次,Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含4種數據模型:Table、External Table、Partition、Bucket。

Hive 中的 Table 和資料庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄來存儲數據。例如,一個表 pvs,它在 HDFS 中的路徑為:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數據倉庫的目錄,所有的 Table 數據(不包括 External Table)都保存在這個目錄中。

Partition 對應於資料庫中Partition 列的密集索引,但是 Hive 中 Partition 的組織方式與資料庫中的很不相同。在 Hive 中,表中的一個 Partition 對應於表下的一個目錄,所有的 Partition 數據都存儲在對應的目錄中。例如:pvs 表中包含 ds 和 city 兩個 Partition,則對應於 ds = 20090801, city = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=US;對應於 ds = 20090801, city = CA 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=CA。

Buckets 對指定列計算 hash,根據 hash 值切分數據,目的是為了便於並行,每一個 Buckets對應一個文件。將 user 列分散至 32 個Bucket上,首先對 user 列的值計算 hash,比如,對應 hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00000;對應hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00020。

External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition。它和 Table 在元數據的組織結構上是相同的,而在實際數據的存儲上則有較大的差異。

在Table 的創建過程和數據載入過程(這兩個過程可以在同一個語句中完成)中,實際數據會被移動到數據倉庫目錄中。之後對數據的訪問將會直接在數據倉庫的目錄中完成。刪除表時,表中的數據和元數據將會被同時刪除。

External Table 只有一個過程,因為載入數據和創建表是同時完成的。實際數據是存儲在 Location 後面指定的 HDFS 路徑中的,它並不會移動到數據倉庫目錄中。

(3)數據交換

數據交換主要分為以下幾個部分

用戶介面:包括客戶端、Web界面和資料庫介面。

元數據存儲:通常是存儲在關系資料庫中的,如MySQL、Derby等。

解釋器、編譯器、優化器、執行器。

Hadoop:用 HDFS進行存儲,利用 MapRece 進行計算。

用戶介面主要有三個:客戶端、資料庫介面和Web界面,其中最常用的是客戶端。Client 是 Hive 的客戶端,當啟動 Client 模式時,用戶會想要連接Hive Server,這時需要指出 Hive Server 所在的節點,並且在該節點啟動 Hive Server。Web界面是通過瀏覽器訪問 Hive的。

Hive 將元數據存儲在資料庫中,如 MySQL、Derby中。Hive 中的元數據包括表的名字、表的列和分區及其屬性、表的屬性(是否為外部表等)、表數據所在的目錄等。

解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化到查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,並在隨後由 MapRece調用執行。

Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapRece 完成(包含 * 的查詢不會生成 MapRedcue 任務,比如 select * from tbl)。

以上從Hadoop的分布式文件系統HDFS、分布式資料庫HBase和數據倉庫工具Hive入手介紹了Hadoop的數據管理,它們都通過自己的數據定義、體系結構實現了數據從宏觀到微觀的立體化管理,完成了Hadoop平台上大規模的數據存儲和任務處理

⑶ hive.log可以刪嗎

可以。在hive中刪除只會刪除MySQL元數據hdfs上的原始數據不會刪除內部表外部表轉換。

⑷ 在hive中怎樣刪除一張有數據的管理表,包括刪除數據

Hive的數據管理:

(1)元數據存儲

Hive 將元數據存儲在 RDBMS 中,有三種模式可以連接到資料庫:

Single User Mode:此模式連接到一個 In-memory 的資料庫 Derby,一般用於 Unit Test。

Multi User Mode:通過網路連接到一個資料庫中,這是最常用的模式。

Remote Server Mode:用於非 Java 客戶端訪問元資料庫,在伺服器端啟動一個 MetaStoreServer,客戶端則利用 Thrift 協議通過 MetaStoreServer來訪問元資料庫。

(2)數據存儲

首先,Hive 沒有專門的數據存儲格式,也沒有為數據建立索引,用戶可以非常自由地組織 Hive 中的表,只需要在創建表的時候告訴 Hive 數據中的列分隔符和行分隔符,它就可以解析數據了。

其次,Hive 中所有的數據都存儲在 HDFS 中,Hive 中包含4種數據模型:Table、External Table、Partition、Bucket。

Hive 中的 Table 和資料庫中的 Table 在概念上是類似的,每一個 Table 在 Hive 中都有一個相應的目錄來存儲數據。例如,一個表 pvs,它在 HDFS 中的路徑為:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的數據倉庫的目錄,所有的 Table 數據(不包括 External Table)都保存在這個目錄中。

Partition 對應於資料庫中Partition 列的密集索引,但是 Hive 中 Partition 的組織方式與資料庫中的很不相同。在 Hive 中,表中的一個 Partition 對應於表下的一個目錄,所有的 Partition 數據都存儲在對應的目錄中。例如:pvs 表中包含 ds 和 city 兩個 Partition,則對應於 ds = 20090801, city = US 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=US;對應於 ds = 20090801, city = CA 的 HDFS 子目錄為:/wh/pvs/ds=20090801/city=CA。

Buckets 對指定列計算 hash,根據 hash 值切分數據,目的是為了便於並行,每一個 Buckets對應一個文件。將 user 列分散至 32 個Bucket上,首先對 user 列的值計算 hash,比如,對應 hash 值為 0 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00000;對應hash 值為 20 的 HDFS 目錄為:/wh/pvs/ds=20090801/city=US/part-00020。

External Table 指向已經在 HDFS 中存在的數據,可以創建 Partition。它和 Table 在元數據的組織結構上是相同的,而在實際數據的存儲上則有較大的差異。

在Table 的創建過程和數據載入過程(這兩個過程可以在同一個語句中完成)中,實際數據會被移動到數據倉庫目錄中。之後對數據的訪問將會直接在數據倉庫的目錄中完成。刪除表時,表中的數據和元數據將會被同時刪除。

External Table 只有一個過程,因為載入數據和創建表是同時完成的。實際數據是存儲在 Location 後面指定的 HDFS 路徑中的,它並不會移動到數據倉庫目錄中。

(3)數據交換

數據交換主要分為以下幾個部分

⑸ hive中怎樣刪除分區

清除扇區數據,會經磁碟中的清零並用隨機字元重寫,這樣操作後
數據就再沒有辦法恢復
清除扇區數據的時候可以選擇某個分區進行
刪除所有分區
會將所有分區刪除
詳細看軟體的使用教程或是咨詢客服吧

⑹ Hive(五)DML數據操作

語法

(1)load data:表示載入數據
(2)local:表示從本地載入數據到hive表;否則從HDFS載入數據到hive表
(3)inpath:表示載入數據的路徑
(4)overwrite:表示覆蓋表中已有數據,否則表示追加
(5)into table:表示載入到哪張表
(6)student:表示具體的表
(7)partition:表示上傳到指定分區
案例

 2)導入本地數據

 3)查看person表數據

 2)清空 person表數據; truncate table person;

 3)查看person表清空情況(已經沒有數據了)

 4)導入 HDFS 數據到 person表中

 5)重新查詢 person表,查看數據情況

 2) 導入HDFS,無需添加 local

 3) row format delimited fields terminated by ' ' ;

語法:insert into <table> <表名> <查詢語句>
案例:
創建一張新表:create table if not exists person2(id int,name string,phone string);

將 person 表中id 為 1和3的數據插入到 person2表中。

查詢person2表數據

方式二:into overwrite
語法:insert overwrite table <表名> <查詢語句>
測試之前重新准備一張表

向 person6 表中添加數據。

數據結果

注意:使用 insert overwrite 後面必須加上 table ,否則報錯
注意

語法 :create table [if not exists] <表名> as <查詢語句>
描述 :根據查詢結果創建表(查詢的結果會添加到新創建的表中)
案例
按照person表的結果創建person3表

查詢 person3

注意:使用查詢結果創建數據表時,需要加入 關鍵字

管理表
語法 :create table [if not exists] <表名>(欄位信息) row format delimited fields terminated by <分割符>location <載入數據路徑>
案例 :載入person 表的數據。
查詢 person 數據載入的地址

創建 person4 表並設置 person表的數據路徑。

查詢 person4 表信息;person4中的表數據全部來自於person表。

外部表

創建一個管理表 t1

向管理表t1中添加一條數據

創建t2 並指定t1數據的載入地址

查詢 t2 表

刪除 t1 表

再次查詢 t2 表

驗證 t1 為外部表時,刪除t1表時,是否會刪除數據。
重新創建 t1表

向t1中添加數據3

創建 t2(原來的給刪除了)並指定為外部表,並載入 t1的數據路徑

查詢 t1 表結構(驗證是否為外部表

查詢 t2 數據(有數據2)

刪除t1 表

查詢 t2 表(數據並沒有刪除)

更加深刻理解 管理表和外部表之間的區別。

語法 :import table <全新的表名> from '<Export 導出的地址>'

查詢 person_import 表

查看家目錄,生成了 一個 aaa目錄,目錄中有一個 000000_0 文件

查看 000000_0文件;正好是 person表中的數據。

注意:這里的 overwrite 並不是可選項(可加不可加),這里必須加上overwrite ,否則會報錯。

查看 000000_0文件;使用了製表符,對數據進行格式化。

查看 /aaa/000000_0 文件

查看person_bak 文件

語法 :hive -e "<sql語句>" > <輸出路徑>
案例

查看家目錄中的 person_bak

語法 :export table <表名> to '<HDFS地址>'
案例 :將 person 表的數據導出到 HDFS /person2中

查看 /person2 的層次結構

查看 /person2/data/person

⑺ hive中怎麼刪除表中的部分數據

insert
overwrite
table
t_table1
select
*
from
t_table1
where
XXXX;
其中xxx是你需要保留的數據的查詢條件。
如果清空表,如下:
insert
overwrite
table
t_table1
select
*
from
t_table1
where
1=0;

⑻ hive刪除一列了數據還在嗎,查找會有影響嗎

不在,不會影響。hive在刪除表的時候,內部表的元數據和數據會被一起刪除,而hive外部表只刪除元數據,不刪除數據,所以查找不會影響。

閱讀全文

與hive如何刪數據文件相關的資料

熱點內容
品牌代理手續有哪些 瀏覽:765
怎麼證明流水是正常交易 瀏覽:990
市場汽車鈑金怎麼收費 瀏覽:109
za的什麼產品好用 瀏覽:1000
地理數據坐標系有哪些 瀏覽:786
江蘇程序員怎麼樣 瀏覽:136
全場景數據智能服務商哪個品牌好 瀏覽:298
水家湖鎮農貿市場在哪裡 瀏覽:666
卓帆信息技術考試為什麼沒有評分 瀏覽:569
技術交流產品設計講什麼 瀏覽:981
如何識別發票的提取信息 瀏覽:136
三星nao4如何關閉不用的程序 瀏覽:618
交易員如何破境 瀏覽:68
文檔應用程序設計部分寫什麼 瀏覽:632
batj程序員月薪多少 瀏覽:179
找代理工作哪個平台好 瀏覽:128
biaze品牌都有哪些產品 瀏覽:396
如何使用go優化文本信息 瀏覽:241
個人駕證信息上哪裡查 瀏覽:720
拉伸實驗中各項數據什麼意思 瀏覽:884