首页 > 解决方案 > hdfs 计数命令

问题描述

我正在使用下面的命令来分配一个值,但由于某些原因 hdfs -count 被禁用。是否有另一种方法可以通过调整代码来获得

var=hdfs dfs -ls /hdfs_path/ | grep col=2020_03 | awk -F' ' '{system("hdfs dfs -count "$8)}' | awk -F' ' '{if ($3 != 0) print $4}' | awk -F'=' '{print $2}'|sort -nr | uniq | head -1

基本上我需要找到在 hdfs 目录中保存数据的最新月份值。例如

hdfs_path/col=2020_03_21/data.part - this has no data
    hdfs_path/col=2020_03_20/data.part - this has data
    hdfs_path/col=2020_03_19/data.part - this has data

因此输出应该是val = 2020_03_20

标签: hadoophdfs

解决方案


创建具有 2 列(数据、日期)和日期作为分区列的 Hive 外部表。运行 hive 查询以获取包含数据的日期。

按日期顺序从表组中选择 max(date),count(*) > 1


推荐阅读