gpt4 book ai didi

hadoop - MSCK REPAIR TABLE 显示无错误,但未检测到任何分区

转载 作者:行者123 更新时间:2023-12-02 20:26:55 25 4
gpt4 key购买 nike

我对 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 函数将能够读取其他分区。

我一直在阅读其他人的类似问题,但看起来与这个问题并不相似。

感谢您的任何帮助。

最佳答案

您的 test 表是在 /user/test/ hdfs目录中创建的。

  • 当我们运行msck repair table时, hive 会检查是否有任何新分区添加到/user/test/目录中,但是 not all sub directories recursively
  • ,即您所有分区都位于 /user/test/Partition_Trial 目录(位于测试目录内)下,这就是msck repair table无法找到新添加的分区的原因。

  • 解决此问题的选项:
  • 使用ALTER TABLE test ADD IF NOT EXISTS
    PARTITION
    添加所有分区。

    (or)
  • 将表的位置更改为/user/test/Partition_Trial
    (or)
  • 保持表位置不变,并将所有新分区添加到/user/test目录。
  • 关于hadoop - MSCK REPAIR TABLE <tablename>显示无错误,但未检测到任何分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55865513/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com