Я пытаюсь реализовать объединение в MapReduce между двумя разными файлами.Оба файла содержат детали транзакций биткойнов.Первый файл содержит следующие поля:
hash, value, n, publickey
Второй файл, к которому я тоже хочу присоединиться, имеет следующие поля:
txid, tx_hash, vout
.
Я хочу выполнитьсоединение репликации между полем хеш-функции из первого файла и полем txid из второго файла.Эти два поля ссылаются на одно и то же значение, поэтому объединение должно найти транзакции во втором файле, на которые также ссылаются в первом файле.Вот код, который я написал до сих пор:
from mrjob.job import MRJob
from mrjob.step import MRStep
class repl_stock_join(MRJob):
sector_table = {}
def mapper_join_init(self):
with open("filtertemp.csv") as f:
for line in f:
fields = line.split(',')
key = fields[0]
val = "hash"
self.sector_table[key] = val
def mapper_repl_join(self, _, line):
try:
fields = line.split(',')
txid = fields[0]
if txid in self.sector_table:
print(txid)
yield(txid, None)
except:
pass
def steps(self):
return [MRStep(mapper_init=self.mapper_join_init, mapper=self.mapper_repl_join)]
if __name__ == '__main__':
repl_stock_join.run()
Однако при запуске этого кода ничего не возвращается, кроме пустого текстового файла, который не должен иметь место.Любая помощь, чтобы исправить это приветствуется.