【问题标题】:count(*) on Avro table returns 0Avro 表上的 count(*) 返回 0
【发布时间】:2019-05-10 21:28:08
【问题描述】:

我最近开始在 Hive 中将 AvroSerDe 用于我的外部表。

Select col_name,count(*)
from table
group by col_name;

上面的查询给了我一个计数。下面的查询没有:

Select count(*)
from table;

【问题讨论】:

    标签: hive avro


    【解决方案1】:

    原因是 hive 只是查看表元数据并获取值。由于某种原因,表的统计信息不会在 hive 中更新,因为 count(*) 返回 0。

    在创建表时写入的统计信息没有数据行,对于任何数据追加/更改,hive 需要在元数据中更新此统计信息。

    运行 ANALYZE 命令收集统计信息并将其写入 Hive MetaStore。

    ANALYZE TABLE table_name COMPUTE STATISTICS;

    访问Apache Hive wiki了解更多关于 ANALYZE 命令的详细信息。

    解决此问题的其他方法

    • 使用 'limit' 和 'group by' 子句触发 map reduce 作业以获取 行数并给出正确的值

    • 将 fetch 任务转换设置为 none 会强制 hive 运行 map reduce 计算行数的作业

      hive> set hive.fetch.task.conversion=none;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-22
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多