簡體   English   中英

MSCK修理表 <tablename> 顯示沒有錯誤但沒有檢測到任何分區

[英]MSCK REPAIR TABLE <tablename> showing no error but not detecting any partitions

我是HIVE環境的新手。

我正在嘗試使用分區在配置單元中創建外部表。

例如,只有兩個分區: 在此輸入圖像描述

我創建了一個外部表:

CREATE EXTERNAL TABLE test
(col1 INT, col2 BIGINT, col3 STRING, col4 STRING, col5 STRING, col6 STRING, 
col7 BOOLEAN, col8 INT, col9 TIMESTAMP, col10 INT, col11 TIMESTAMP, 
col12 STRING, col13 DOUBLE, col14 DOUBLE, col15 DOUBLE, 
col16 DOUBLE,col17 BIGINT, col18 INT)
PARTITIONED BY (dataDate STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
tblproperties ("skip.header.line.count"="1");

表已成功創建。 然后我添加第一個分區:

ALTER TABLE test ADD IF NOT EXISTS
PARTITION(dataDate='20171014')
LOCATION '/user/test/Partition_Trial';

然后將分區寫入表中。

在此輸入圖像描述

然后我嘗試使用添加下一個分區

MSCK REPAIR TABLE test;

沒有錯誤。

在此輸入圖像描述

但是沒有讀取分區。

在此輸入圖像描述

我期待MSCK功能能夠讀取其他分區。

我一直在閱讀其他人的類似問題,但它似乎與此問題不相似。

感謝您的任何幫助。

您的test表在/user/test/ hdfs目錄中創建。

  • 當我們運行msck修復表然后hive檢查是否有任何新分區添加到/user/test/目錄但not all sub directories recursively

  • 即所有分區都在/user/test/Partition_Trial目錄下(在測試目錄內),這就是msck repair table無法找到新添加的分區的原因。

解決此問題的選項:

  1. 使用ALTER TABLE test ADD IF NOT EXISTS PARTITION添加所有分區ALTER TABLE test ADD IF NOT EXISTS PARTITION

    (or)

  2. 將表位置更改為/user/test/Partition_Trial

    (or)

  3. 保持表位置不變並將所有新分區添加到/user/test目錄。

暫無
暫無

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

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