【发布时间】:2020-04-03 09:16:20
【问题描述】:
我有大约 750 个文件 (.csv),每一行都有一个 UUID 条目。我对这个脚本的目标是计算所有 750 个左右的文件中存在多少唯一 UUID。文件名结构如下:
DATA-20200401-005abf4e3f864dcb83bd9030e63c6da6.csv
如您所见,它有一个日期和一些随机 ID。它们都在同一个目录中,并且都具有相同的文件扩展名。每个文件的格式都是新行分隔的,只有一个 UUID,如下所示:b0d6e1e9-1b32-48d5-b962-671664484616
我尝试合并所有文件,但事情变得一团糟,这大约是 15GB 的数据。
我的最终目标是获得一个输出,以便说明所有文件中唯一 ID 的数量。例如:
文件1:
xxx-yyy-zzz
aaa-bbb-ccc
xxx-yyy-zzz
文件2:
xxx-yyy-zzz
aaa-bbb-ccc
xxx-yyy-zzz
扫描这两个文件后的最终输出是:
The total number of unique ids is: 2
【问题讨论】:
-
您可以尝试从文件中读取一行并将其添加到集合中。对所有文件执行此操作。如果您的唯一 ID 数量较少,这应该可以工作。不是最好的方法,但应该适用于您的情况。这绝对比一次加载所有文件要好。
-
一定要用 Python 吗?一个简单的解决方案可能是
cat *.csv | sort | uniq | wc -l -
我会一次将 ID 添加到排序列表中,如果 ID 已存在于列表中,则不要添加它。唯一 ID 的总数将是完整列表的长度。
-
@jarmod:将
sort | uniq替换为sort -u以让sort也进行唯一化(通过减小排序工作集的大小可以更快地运行)。跨度> -
我不需要 Python!哈哈,这太棒了。一旦文件从 S3 完全传输到本地,我将运行它并试一试。那么
cat *.csv | sort -u | wc -l?
标签: python