Использование MRjob для естественного соединения - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь создать программу присоединения пути URL-ссылки, используя MapReduce через библиотеку MRJob.Имеется следующий список URL:

url1, url2

url1, url3

url2, url3

url4, url5

url2, url4

Мне нужно получить выходные данные триплетных URL:

url2, url4, url5

url1, url2, url3

url1, url2,url4

Это код, который я получил до сих пор:

from mrjob.job import MRJob

class MRJoin(MRJob):
    def mapper(self, key, line):
        a = line.split(',')
        for word in a:
            yield word, a
            
    def reducer(self, word, line):
    	for i in line:
    		if word == i[1]:
    			for i2 in line:
    				if i2[0] == word:
    					yield i,i2

if __name__ == '__main__':
    MRJoin.run()

Этот код дает мне следующее:

["url1", "url2"] ["url2", "url3"]

["url1", "url2"] ["url2," url4 "]

То есть я не присоединяюсь к спискам и не получаю все ссылки. Как я могу достичь своей цели?

...