hadoop - hdfs + 每个递归文件夹的文件计数
问题描述
我们创建以下 bash 脚本
此脚本将计算每个 HDFS 文件夹下的文件数
#!/bin/bash
hadoop dfs -lsr / 2>/dev/null| grep drwx |awk '{print $NF}'>/tmp/file
while read -r line
do
sleep 0.1
echo -n $line
su -l hdfs -c "hdfs fsck $line -files -blocks -locations -openforwrite 2>/dev/null| grep 'Total files' "
done < /tmp/file
输出示例
/applications Total files: 34198
/applications/hdfs Total files: 34185
/applications/hive Total files: 13
/apps Total files: 230
/apps/hive Total files: 443540
此脚本的问题是扫描所有 HDFS 和 SUB HDFS 文件夹(递归)并最终打印文件计数所需的时间
任何其他绝妙的想法如何使文件在 HDFS 中的计数比我的方式快得多?
解决方案
推荐阅读
- amazon-web-services - 如何使用 Curl 执行简单的 AWS/EC2 REST API 调用
- python - 如何选择合适的谷歌风格迁移模型?
- bash - 如何将 git log --pretty=format:%aN,%ae 转换为特定格式?
- r - 如何用 mapply R 函数填充矩阵?
- python - 即使使用 Selenium,我们也可以禁止 IP 吗?
- sql - 根据某些字段比较两行并在发现差异时标记它们
- java - 在java中使用绝对路径打开文件
- php - 安装apache2.4和PHP7.2.29后Apache无法解析PHP
- reactjs - 渲染 React.Suspense 子节点后测量 DOM
- python - 芹菜将并行任务链接成和弦