gpt4 book ai didi

ruby - 在 ruby​​ 中处理具有多个重复项的大量数据

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:05 27 4
gpt4 key购买 nike

我有一个大文本文件,我想用 ruby​​ 脚本处理它并将其存储在一个单独的文件中。我的问题是生成的文件将包含数亿行,其中绝大多数是重复的。我想在将它们写入磁盘之前消除重复项。

我曾尝试处理它们并将这些行放在一个集合中以在将它们写入输出文件之前消除重复项,但最终我用完了内存并且脚本崩溃了。

有没有办法在 ruby​​ 中有效地解决我的问题?

最佳答案

使用以下代码创建一个名为 uniq.rb 的文件:

require 'digest'

hashes = {}

STDIN.each do |line|
line.chomp!
md5 = Digest::MD5.digest(line)
next if hashes.include?(md5)
hashes[md5] = true
puts line
end

然后从命令行运行它:

ruby uniq.rb < input.txt > output.txt

主要思想是您不必将整行保存在内存中,而只需使用 16 字节的 MD5 哈希(加上 true 值)来跟踪唯一行。

关于ruby - 在 ruby​​ 中处理具有多个重复项的大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208174/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com