簡體   English   中英

MapReduce-Java:計算數組列表的平均值

[英]Mapreduce-java: calcutaing average for array list

我已經為mapreduce分配了作業,而我在mapreduce編程中還是一個新手。 我想計算每年和特定城市的平均值,最小值和最大值。 這是我的示例輸入

卡爾加里,AB,2009-01-07,604680,12694,2.5207754,0.065721168,0.025668362,0.972051954,0.037000279,0.022319018,,0.003641149 ,,, 0.002936745,,0.016723641卡爾加里,AB,2009-12-30,604620,12694 ,2.051769654,0.060114973,0.034026918,1.503277516,0.054219005,0.023258217,``0.00354166''``0.003361414''``0.122375131 Calgary,AB,2010-01-06,604680,12266,4.015745522,0.097792741,0.032738892,0.368454554,0.019228992,0.032882053, ,, 0.004778065 ,,, 0.003190444,,0.064203865,卡爾加里,AB,2010-01-13,604680,12551,3.006492921,0.09051656,0.041508534,0.215395047,0.012081755,0.023706119,,0.004231772 ,,, 0.003083003 ,,, 0.155212503

我知道如何使用此代碼查找城市和年份:

String line = value.toString();
    String[] tokens = line.split(",");
    String[] date = tokens[2].split("-");
    String year = date[0];
    String location = tokens[0];

現在,我想在每行中找到這兩個數字(例如2.5207754,0.065721168,不完全相同,而是第三和第四個逗號之后的所有數字),並找到一個平均值,最小值和最大值。

在輸出中應如下所示:

卡爾加里2009年平均值:“”,分鍾; “”,最大值:“”卡爾加里2010年平均值:“”,最小值; “”,最大:“”

我試圖使用此代碼查找每一行中的值,但由於每一行中的數據集都不相同,因此出現了錯誤(在該部分中沒有數據或該長度更大的數據)

float number = 0;
    float number2 = 0 ;
    char a;
    char c;
    a = line.charAt(34);
    c = line.charAt(44);
    if (a == ',') 
    { 
        number = Float.parseFloat(line.substring(35, 44));
    }
    else 
    {
        number = Float.parseFloat(line.substring(35, 46));
    }

    if (c == ',')
    {
        number2 = Float.parseFloat(line.substring(45, 56));

    } else 
    {
        number = Float.parseFloat(line.substring(47, 58));
    }

    Text numbers = new Text(number + " " + number2 + " ");

然后,我嘗試使用此代碼,但與上面的代碼相同,它不起作用:

String number = tokens[4];
String number2 = tokens[5];

你能幫我做這個項目嗎?

查看您的輸入,看來您的記錄之間是用空格隔開的。 您可以先使用“”分割,然后獲取各個值並將其用於計算

        String[] arr = line.split(" ");
        for(String val : arr){
            String[] dataArr = val.split(",");
            String city  = dataArr[0];
            String date = dataArr[2];
            String v1 = dataArr[5];
            String v2 = dataArr[6];
            System.out.println("city: "+city +" date: "+ date +" v1: "+ v1+"v2: "+ v2);
        }

城市:卡爾加里日期:2009-01-07 v1:2.5207754v2:0.065721168城市:卡爾加里日期:2009-12-30 v1:2.051769654v2:0.060114973城市:卡爾加里日期:2010-01-06 v1:4.015745522v2:0.097792741城市:卡爾加里日期:2010-01-13 v1:3.006492921v2:0.09051656城市:卡爾加里日期:2009-01-07 v1:2.5207754v2:0.065721168

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM