摘要:
我需要计算HDFS实例中所有.txt文件中的所有唯一行。
.txt文件的总大小约为450GB。
我使用以下bash命令:
hdfs dfs -cat /<top-level-dir>/<sub-dir>/*/*/.txt | cut -d , -f 1 | sort --parallel=<some-number> | uniq | wc -l
问题在于该命令将占用所有可用内存,并且HDFS实例以代码137(内存不足)退出。
题:
我有什么办法可以限制整个命令的ram使用率,比如说hdfs中的可用空间的一半,或者以某种方式在命令仍在运行时清理内存?
更新:
我需要删除| 排序 因为它是一个合并排序实现,所以空间复杂度为O(n)。
我只能使用| uniq | 没有| 排序 。