求两列的和,计算mapreduce中的max、min和mean值

wbgh16ku  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(484)

我有一个mapper的示例代码如下所示,键是uco,值是taxitotal,应该是taxiin和taxiout两列的和,这两列的和怎么算?
我目前的解决方案taxiin+taxiout的结果是一个粘贴数,像333+444=333444,我需要它是777,怎么写代码?


# ! /usr/bin/env python

import sys

# -- Airline Data

# Year, Month, DayofMonth, DayOfWeek, DepTime, CRSDepTime, ArrTime, CRSArrTime, UniqueCarrier, FlightNum,

# TailNum, ActualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, Origin, Dest,         Distance, TaxiIn,

# TaxiOut, Cancelled, CancellationCode, Diverted, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay

for line in sys.stdin:
    line = line.strip()
    unpacked = line.split(",")
    Year, Month, DayofMonth, DayOfWeek, DepTime, CRSDepTime, ArrTime, CRSArrTime, UniqueCarrier, FlightNum, TailNum, ActualElapsedTime, CRSElapsedTime, AirTime, ArrDelay, DepDelay, Origin, Dest, Distance, TaxiIn,TaxiOut, Cancelled, CancellationCode, Diverted, CarrierDelay, WeatherDelay, NASDelay, SecurityDelay, LateAircraftDelay = line.split(",")
    UCO = "-".join([UniqueCarrier, Origin])
    results = [UCO, TaxiIn+TaxiOut]
    print("\t".join(results))
laximzn5

laximzn51#

转换 TaxiIn + TaxiOut 收件人:

int(TaxiIn) + int(TaxiOut)

参见以下示例:

In [1612]: TaxiIn = '333'                                                                                                                                                                                   

In [1613]: TaxiOut = '444'                                                                                                                                                                                  

In [1614]: TaxiIn + TaxiOut                                                                                                                                                                                 
Out[1614]: '333444'

In [1615]: int(TaxiIn) + int(TaxiOut)                                                                                                                                                                       
Out[1615]: 777

你不能有字符串的数字和,因为转换 strint 或者 float .

您的代码应该是:

results = [UCO, str(int(TaxiIn) + int(TaxiOut))]
print("\t".join(results))

相关问题