用hadoop实现两个大文件的笛卡尔积

i2byvkas  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(316)

我们有两份档案 file1 以及 file2 它们有大量的线,比如说每行10亿条。这里的目标是获取文件的笛卡尔积。
所以如果 file1m 线条和 file2n 笛卡尔积输出的 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> .
但内存量似乎是个问题。因此,我正在寻找一个更有效的解决方案,如果可能的内存。
请建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题