我正在尝试在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()
但是,在运行此代码时,除空文本文件外不返回任何内容,实际情况并非如此。感谢您提供解决此问题的帮助。