刪除外部表時遇到的坑

2021-09-10 22:41:48 字數 1119 閱讀 3739

洗引擎資料的時候,由於改動了幾個字段,因此需要刪除原來關聯了hdfs指定路徑的外部表,重新建外部表表並關聯hdfs。問題就出現在刪外部表上,開始使用truncate的時候,發現並不能 刪除外部表,於是查了查發現truncate只能刪除內部表,於是果斷使用一下命令將外部表先變成了內部表,然後再使用drop進行刪除

alter table *** set tblproperties('external'='false')

drop table ***

結果表是給刪除了,然後發現hdfs上關聯路徑下的分割槽資料也全部沒了,然後就開始了悽慘的補資料之路...

外部表——>建立表的時候指定external,外部表在刪除之後,僅會刪除hive外部表中元資料,不會刪除資料和指定路徑 

內部表——>刪除內部表會將資料和預設路徑都刪除,因此可能會誤刪資料,謹慎操作

教訓:千萬不要為了刪除外部表就將外部表先轉化為內部表,這樣會將hdfs上的資料一併刪除的

內外部表轉換

內部表——>外部表:alter table *** set tblproperties('external'='false')

外部表——>內部表:alter table *** set tblproperties('external'='true')

1)truncate:用於刪除表或者分割槽中所有的行,但表結構及其列、約束、索引等保持不變,而且不記錄單個行刪除操作

2)delete: 可以刪除特定行,也可以刪除所有行,並且在事務日誌中為所刪除的每行記錄一項

3)drop:刪除整個表資料及其表定義

1)刪除外部表分割槽 

alter table tablename drop partition(partitions...)

2)刪除hdfs上的資料

hdfs dfs -ls url_name

reference: blog.csdn.net/tengxing007…

blog.csdn.net/u011686226/…

安裝 anaconda 時遇到的坑

在win10系統中安裝anaconda時,最後總是報錯 unicodedecodeerror utf8 codec can t decode byte 0xce in position 11 invalid 這是由於windows使用者名稱中含有中文字元導致的,網上好多推薦對windows使用者名稱...

初學springboot時遇到的坑

一 專案啟動後,在瀏覽器輸入http localhost 8080 springbootweb hello 結果介面提示以下內容 檢視了控制台,啟動過程沒有報異常,那是什麼原因導致的呢?上網時查詢 給出的解決方案如下 原因 spring boot會自動載入啟動類所在包下及其子包下的所有元件.針對第乙...

寫HTML CSS頁面時遇到的坑

html和css這前端簡直是一大坑 按著教程來一點點實踐看不下去了,就打算自己做著乙個頁面先。其中又想把vim的補全弄好,還有git學會,想著存上github,但都太麻煩了tat 跑題了跑題了,git和vim的ycm補全都沒弄好,但html和css的坑倒是踩了不少。我還以為在寫width和heigh...