MSCK修理表 显示没有错误但没有检测到任何分区

问题描述 投票:0回答:1

我是HIVE环境的新手。

我正在尝试使用分区在配置单元中创建外部表。

例如,只有两个分区:enter image description here

我创建了一个外部表:

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';

然后将分区写入表中。

enter image description here

然后我尝试使用添加下一个分区

MSCK REPAIR TABLE test;

没有错误。

enter image description here

但是没有读取分区。

enter image description here

我期待MSCK功能能够读取其他分区。

我一直在阅读其他人的类似问题,但它似乎与此问题不相似。

感谢您的任何帮助。

hadoop hive
1个回答
0
投票

您的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添加所有分区。 (or)
  2. 将表位置更改为/user/test/Partition_Trial (or)
  3. 保持表位置不变并将所有新分区添加到/user/test目录。
© www.soinside.com 2019 - 2024. All rights reserved.