行改组多 TB 文本文件
Line shuffling multi-terabyte text file
问题:在给定 Z TB RAM 的情况下,对包含 n 行的 T TB 文本文件进行行洗牌(同一行可以在文本文件中出现多次),其中 T = Z * 100。准洗牌很好。
目前我正在使用 this Python implementation,它执行准随机播放,但速度有点慢。该算法是 O(n),所以我认为缓慢是由 Python 引起的。我正在考虑用 C 重新实现它,但在这样做之前我想知道是否有人知道现有的解决方案。
不工作的东西:GNU shuf(加载整个文件以在内存中洗牌),GNU sort -R(散列每一行,因此相邻输出相同的行)。
我使用以下明显更快的 C++ 实现解决了这个问题:https://github.com/alexandres/terashuf
问题:在给定 Z TB RAM 的情况下,对包含 n 行的 T TB 文本文件进行行洗牌(同一行可以在文本文件中出现多次),其中 T = Z * 100。准洗牌很好。
目前我正在使用 this Python implementation,它执行准随机播放,但速度有点慢。该算法是 O(n),所以我认为缓慢是由 Python 引起的。我正在考虑用 C 重新实现它,但在这样做之前我想知道是否有人知道现有的解决方案。
不工作的东西:GNU shuf(加载整个文件以在内存中洗牌),GNU sort -R(散列每一行,因此相邻输出相同的行)。
我使用以下明显更快的 C++ 实现解决了这个问题:https://github.com/alexandres/terashuf