Hive从hdfs中删除后如何读取数据?

时间:2016-08-31 15:19:17

标签: hadoop hive hdfs impala

我在hive中有一个外部表并指向HDFS位置。我错误地运行了两次将数据加载到HDFS中。

即使从HDFS hive中删除了重复文件,也会显示两次数据计数(即包括删除的重复数据文件计数)。

  

从tbl_name中选择count(*) - 返回双倍时间

但是,

  

从tbl_name中选择count(col_name) - 返回实际计数。

之后从Impala尝试时的相同表格
  

INVALIDATE METADATA

我只能看到HDFS中可用的数据计数(不重复)。

即使从物理位置(hdfs)删除后,hive如何将count计为double,是否从统计信息中读取?

1 个答案:

答案 0 :(得分:1)

Hive正在使用统计信息来计算cont(*)。您手动删除了文件(不使用Hive),这就是统计信息错误的原因。

解决方案是:

  1. 在这种情况下关闭统计信息使用情况:

    set hive.compute.query.using.stats = false;

  2. 分析你在评论中提到的表格:

    分析表tbl_name分区(a,b,c)计算统计信息;