【发布时间】:2015-08-27 13:30:10
【问题描述】:
我有以下形式的数据:
<j> <l> <n> "jd".
<K> <J> <N> <D>.
<A> <B> <D> <F>.
<E> <F> <G> "abc".
<A> <B> <C> <D>.
<G> <k> "jd" "l".
我需要对数据进行排序,以便仅对奇数行进行排序,并根据奇数行对相应的偶数行进行排序。即文件的排序仅使用奇数行进行,即仅对以下行进行排序:
<j> <l> <n> "jd".
<A> <B> <D> <F>.
<A> <B> <C> <D>.
到
<A> <B> <C> <D>.
<A> <B> <D> <F>.
<j> <l> <n> "jd".
偶数行按原样获得副本。例如,上面的排序顺序将是:
<A> <B> <C> <D>.
<G> <k> "jd" "l".
<A> <B> <D> <F>.
<E> <F> <G> "abc".
<j> <l> <n> "jd".
<K> <J> <N> <D>.
现在偶数行"<G> <k> "jd" "l"."总是出现在奇数行"<A> <B> <C> <D>."之后,偶数行"<E> <F> <G> "abc". "总是出现在奇数行"<A> <B> <D> <F>."之后,偶数行"<K> <J> <N> <D>."出现在奇数行<j> <l> <n> "jd".之后
我尝试使用带有并行选项的 linux 排序命令,因为我的文件大小为 200 GB,但这样做会扰乱奇数行的顺序。有没有办法使用 linux sort 命令或使用一些 python 程序我可以实现 200 GB 文件的预期行为
【问题讨论】:
-
你需要像
map-reduce这样的东西 -
找到问题子集的解决方案:仅 4 行。然后你应该可以用 python 来做到这一点,通过分割成不同的文件。
-
您可能需要一种使用硬盘驱动器作为存储的高效排序算法,例如 mergesort 或类似的。
-
@taesu 我的问题是我找不到这样的解决方案
-
问题是我没有得到你的问题子集的排序算法,或者它需要太多的脑力!
标签: python linux sorting bigdata