簡體   English   中英

刪除 Hive 表和 msck 修復失敗,表存儲在谷歌雲存儲桶中

[英]Drop Hive Table & msck repair fails with Table stored in google cloud bucket

我正在使用下面的 SQL 語句在 Google Cloud Bucket 中創建 hive 表。

CREATE TABLE schema_name.table_name (column1 decimal(10,0), column2 int, column3 date) 
   PARTITIONED BY(column7 date) STORED AS ORC
   LOCATION 'gs://crazybucketstring/' 
   TBLPROPERTIES('ORC.COMPRESS'='SNAPPY');

然后我使用distcp命令將數據加載到該表中,現在當我嘗試刪除表時它會失敗並顯示以下錯誤消息,即使我嘗試刪除空表它也會失敗。

hive>>DROP TABLE schema_name.table_name; 

**Error:** Error while processing statement: 
FAILED: Execution Error, return code 1 from 
org.apache.hadoop.hive.ql.exec.DDLTask.MetaException
(message:java.lang.IllegalArgumentException: `hadoopPath must not be null`)
(state=08S01,code=1)

我還使用gsutil rm -r gs://命令從 Google Cloud Storage 存儲桶中刪除了文件,但仍然無法刪除表並給出相同的錯誤

同樣在運行msck repair table時,它會給出以下錯誤。

FAILED: 
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask (state=08S01,code=1) 

任何想法可能有什么問題?

該問題與存儲桶位置有關。 我將嘗試逐步解釋如何重新創建它以及如何解決它。 同樣的問題也導致無法運行msck repair命令。

如何重新創建它:

  1. 首先,我創建了一個表(T1),其位置指向此處給出的存儲桶:
    LOCATION 'gs://crazybucketstring/'

  2. 然后我在子文件夾中創建了另一個表(T2)內部存儲桶,位置如下所示
    LOCATION gs://crazybucketstring/schemname/tableaname/

  3. 現在,當我嘗試刪除第一個表(T1)時,它會拋出錯誤,因為整個存儲桶都表現得像表一樣,它不能刪除存儲桶,它只能刪除文件。

  4. 當我嘗試刪除表(T2)時,我可以刪除它,並且存儲桶子目錄中的文件也被刪除,因為它是托管表。 T1表還是很頭疼的。

為了不顧一切地刪除表 T1,我使用gsutil rm -r命令清空了存儲桶並嘗試msck repair table tablename ,但奇怪msck repair命令失敗並顯示以下錯誤消息

>>  msck repair table tablename
Error: Error while processing statement: FAILED: 
Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask (state=08S01,code=1)

像往常一樣, DROP 命令仍然不起作用。

解決方案:

最終我得到了這個有效的想法。

  1. 我更改了表 T1 並將其位置設置為存儲桶內的子目錄,而不是裸存儲桶。
    ALTER TABLE TABLENAME SET LOCATION gs://crazybucketstring/schemname/tableaname/
  2. 現在我做'msck repair',它不會拋出任何錯誤。
  3. 我發出了 DROP Table 命令並且它起作用了。

這個問題與表位置有關,在同一個存儲桶中創建多個表時,我們應該小心處理。 最佳實踐是在存儲桶中使用不同的子目錄來創建不同的表,並避免僅使用存儲桶路徑作為表位置,特別是如果您必須在同一個存儲桶中創建多個表。 謝謝您,如有大數據問題,請隨時與聯系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM