Hadoop流:Python连接不同的文件

Hadoop流:Python连接不同的文件,python,hadoop,mapreduce,hadoop-streaming,Python,Hadoop,Mapreduce,Hadoop Streaming,我有一个进程,它接收输入数据,处理数据并输出数据。在此期间,它生成两个log IN.log和OUT.log IN.log包含数据何时传入以及数据的类型。 OUT.log包含处理数据的时间和数据的类型。 所以 IN.log包含 实时id OUT.log包含 超时id 现在,作为使用python使用hadoop streams进行处理的一部分,我想加入这两个文件,并提供输入时间和输出时间的差异以及数据的id 例如: 2秒id123 3秒id112 关于如何使用PYTHON实现这一点,有什么建议吗?请

我有一个进程,它接收输入数据,处理数据并输出数据。在此期间,它生成两个log IN.log和OUT.log

IN.log包含数据何时传入以及数据的类型。 OUT.log包含处理数据的时间和数据的类型。 所以 IN.log包含 实时id

OUT.log包含 超时id

现在,作为使用python使用hadoop streams进行处理的一部分,我想加入这两个文件,并提供输入时间和输出时间的差异以及数据的id

例如:

2秒id123

3秒id112

关于如何使用PYTHON实现这一点,有什么建议吗?

请看一看运行hadoop作业的帮助程序包。为这个任务编写一个map/reduce将是一个相当简单的过程,大致如下代码所示

from datetime import datetime
from MRJob import MRJob

class JoinJob(MRJob):
    fmt = '%Y-%M-%d'
    def steps(self):
        return [self.mr(mapper=self.mapper, 
                        reducer=self.reducer)]
    def mapper(self, rec_time, rec_id):
        yield rec_id, rec_time

    def reducer(self, rec_id, datetime_strs):
        datetimes = map(lambda x: datetime.strptime(x, self.fmt), 
                            datetime_strs)
        delta_secs = (max(datetimes) - min(datetimes)).total_seconds()
        yield rec_id, delta_secs

if __name__ == '__main__':
    JoinJob.run()
看一看运行hadoop作业的帮助程序包。为这个任务编写一个map/reduce将是一个相当简单的过程,大致如下代码所示

from datetime import datetime
from MRJob import MRJob

class JoinJob(MRJob):
    fmt = '%Y-%M-%d'
    def steps(self):
        return [self.mr(mapper=self.mapper, 
                        reducer=self.reducer)]
    def mapper(self, rec_time, rec_id):
        yield rec_id, rec_time

    def reducer(self, rec_id, datetime_strs):
        datetimes = map(lambda x: datetime.strptime(x, self.fmt), 
                            datetime_strs)
        delta_secs = (max(datetimes) - min(datetimes)).total_seconds()
        yield rec_id, delta_secs

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

到目前为止你试过什么?你需要hadoop、mr和其他东西做什么?这些文件将非常大(几GB),所以选择了hadoop的方式…我可以使用Hive实现这一点,但还想检查hadoop流是否提供更快的处理。到目前为止,你做了哪些尝试?你需要hadoop、mr和其他东西做什么?这些文件将非常大(几GB),所以选择了hadoop的方式…我可以使用Hive实现这一点,但我也想检查hadoop流是否提供更快的处理。