MapReduce联接未输出正确的结果

时间:2018-11-25 23:13:03

标签: python hadoop mapreduce bigdata mrjob

我正在尝试在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()

但是,在运行此代码时,除空文本文件外不返回任何内容,实际情况并非如此。感谢您提供解决此问题的帮助。

0 个答案:

没有答案