pythonmapreduce查找hadoop流的最小和最大温度

dldeef67  于 2021-05-27  发布在  Hadoop
关注(0)|答案(0)|浏览(212)

我需要找出不同气象站的每日最高和最低气温。我的数据来自http://www.ncdc.noaa.gov/orders/qclcd/ 我用的是7月份的每小时记录。这显示了数据的屏幕截图。
我对第一列(wban编号)、第二列(年月日)和第九列(干球温度)感兴趣。与传统的map函数不同,我的mapper需要在实际的reducer执行其余的操作之前执行一些reduce。我的Map需要找到每日最高和最低干球温度在给定的气象站。输出应该是一个键值对(station,[date,min\u temp,max\u temp]),它将作为减速机的输入。然后减速器需要找到所有气象站的每日最小值和最大值。
我曾尝试将数据存储在defaultdict中,但我被困在如何迭代这些值以找到最低和最高温度上。这个问题对我来说相当简单,读取文件的行,拆分它们,提取值并取相应的最小值和最大值。然而,由于我有限的编程经验,我真的不知道如何将其放入正确的python代码中。
我尝试过这样存储数据:

from collections import defaultdict
data = defaultdict(list)

with open(filename, "r") as f:
    for line in f:
        line = line.strip().split(",")
        station = line[0]
        date = line[1]
        temp = line[8]

        try:
            station = int(station)
            date = int(date)
            temp = int(temp)
        except ValueError:
            continue

        data[station].append((date, temp))

也许你甚至不需要字典。应该有一种方法来遍历这些行,并在每天发生变化时进行检查,并取当天的最小值和最大值。我将感谢任何关于这个问题的指导!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题