我们有两份档案 file1
以及 file2
它们有大量的线,比如说每行10亿条。这里的目标是获取文件的笛卡尔积。
所以如果 file1
有 m
线条和 file2
有 n
笛卡尔积输出的 m*n
线。
我可以想到以下解决这个问题的方法:
写 mapper1
每一行都是 <line_number, line_content>
从 file1
和输出 <const, file1_marker+line_number+line_content>
.
写 mapper2
每一行都是 <line_number, line_content>
从 file2
和输出 <const, file2_marker+line_number+line_content>
.
写 mapper3
从输出文件和输出中读取 <const, list_of_file1_and_file2_line_contents>
.
写一个减速机 mapper3
输出并在遍历值时合并 file1_marker+line_number
重视每一个 file2_marker+line_number
它看到的值(可以通过散列等方式使其更快)和输出 <file1_line_content, file2_line_contents>
.
但内存量似乎是个问题。因此,我正在寻找一个更有效的解决方案,如果可能的内存。
请建议。
暂无答案!
目前还没有任何答案,快来回答吧!