在python

时间:2018-03-27 21:07:32

标签: python mapreduce

嗨,我在python的新手,我想研究一下Hadoop Mapreduce。我有这样的数据

Vancouver-1 35.5
Vancouver-2 34.6
Vancouver-3 37.6

显示州 - 月和最高温度 所以我想制作像这样的反转数据

35 Vancouver-2
36 Vancouver-2 Vancouver-1
37 Vancouver-2 Vancouver-1
38 Vancouver-2 Vancouver-1 Vancouver-3

数字是从10到50的D度,下一部分是等于或低于D度的状态列表

我的映射器文件:

%%writefile mapper.py
#!/usr/bin/env python

import sys
import math

QueryMaxTemp = 50;

for line in sys.stdin:
    line = line.rstrip('\n')
    lfields = line.split('\t');
    city_month = lfields[0];
    maxtemp = math.ceil(float(lfields[1]));
for i in QueryMaxTemp:// I think this is wrong
    print ('{}\t{}\t{}'.format(i,city_month,maxtemp))

我的reducer文件

%%writefile reducer.py
#!/usr/bin/env python

import sys

def emit(maxtemp, city_month_list):
    print('{}\t{}'.format(maxtemp,city_month_list))

last_maxtemp = ''
last_city_month_list = ''
for line in sys.stdin:
    line = line.rstrip('\n')
    maxtemp, city_month_lists = line.split('\t', 1)
    if last_maxtemp == maxtemp:
        last_city_month_list = last_city_month_list + max(maxtemp, last_maxtemp) // I think this is wrong
    else:
        if last_maxtemp:
            emit(last_maxtemp, last_city_month_list)
        last_maxtemp = maxtemp
        last_city_month_list = city_month_lists

if last_maxtemp:
        emit(last_maxtemp, last_city_month_list)

我试着解决它,但不知道,有什么想法解决这个问题吗?我想制作一个倒置数据,如下面的示例。感谢

2 个答案:

答案 0 :(得分:0)

您可以使用dict对数据进行排序。密钥将是最高温度,然后将数据(城市月)附加到列表中。

int x;
Scanner sc=new Scanner(System.in);
try{
x=sc.nextInt();
}
catch(Exception e){
e.printStackTrace();
}

答案 1 :(得分:0)

抱歉,现在已经减少了

public void valueChanged(ListSelectionEvent e) {
double price = 0;
if (selectedObject == Enum.object1) 
  price += Enum.object1.getPrice();
else if (selectedObject == Enum.object2) 
  price += Enum.object2.getPrice();
else if (selectedObject == Enum.object1 && selectedObject == Enum.object2) 
  price += Enum.object1.getPrice();
  price += Enum.object2.getPrice();
else 
 price -= Enum.object1.getPrice();
 price -= Enum.object2.getPrice();