source: proiecte/PDAD/trunk/failurecause/pig/mr/RealLabels.java @ 154

Last change on this file since 154 was 154, checked in by (none), 14 years ago

PDAD project

File size: 3.6 KB
Line 
1import java.io.IOException;
2import java.util.*;
3
4import org.apache.pig.EvalFunc;
5import org.apache.pig.FuncSpec;
6import org.apache.pig.data.DataBag;
7import org.apache.pig.data.DefaultBagFactory;
8import org.apache.pig.data.DefaultTupleFactory;
9import org.apache.pig.data.Tuple;
10import org.apache.pig.impl.logicalLayer.schema.Schema;
11import org.apache.pig.data.DataType;
12import org.apache.pig.impl.logicalLayer.FrontendException;
13
14public class RealLabels extends EvalFunc<DataBag> {
15
16        public static HashMap<Double, String> failureCause = new HashMap<Double, String>();
17        public static HashMap<Double, String> durationGroup = new HashMap<Double, String>();
18       
19        public static void init() {
20                // failure cause
21                failureCause.put(new Double(-1), "not reported");
22                failureCause.put(new Double(0), "reported as undetermined");
23                failureCause.put(new Double(999), "infrastructure");
24                failureCause.put(new Double(1999), "hardware");
25                failureCause.put(new Double(2999), "IO");
26                failureCause.put(new Double(3999), "network");
27                failureCause.put(new Double(4999), "software");
28                failureCause.put(new Double(5999), "human error");
29                failureCause.put(new Double(6999), "user");
30                failureCause.put(new Double(7000), "end of measurement");
31
32                // group by duration
33                durationGroup.put(new Double(1000), "short");
34                durationGroup.put(new Double(100000), "medium");
35                durationGroup.put(Double.MAX_VALUE, "long");
36        }
37
38    @Override
39    public DataBag exec(Tuple input) throws IOException {
40        RealLabels.init();
41
42        if (input == null || input.size() == 0)
43            return null;
44        try{
45
46                Double duration = (Double)input.get(0);
47                //System.out.println("duration="+duration);
48                Double failure = new Double(0);
49                if(duration != null && failure != null) {
50               
51                                String f = new String(input.get(1).toString());
52                                StringTokenizer st = new StringTokenizer(f);
53                                String token = st.nextToken();
54                                if(token.compareTo("NULL") == 0)
55                                        failure = -1.0;
56                                else
57                                        failure = Double.parseDouble(token);
58                               
59                                //System.out.println("failure="+failure);
60                                String durationClass = "", faultClass = "";
61               
62                                // get duration class
63                                        LinkedList<Double> ll1 = new LinkedList<Double>(
64                                                        RealLabels.durationGroup.keySet());
65                                        Collections.sort(ll1);
66                                        Iterator iterator1 = ll1.iterator();
67                                        while (iterator1.hasNext()) {
68                                                double mkey = (Double) iterator1.next();
69                                                if (duration <= mkey) {
70                                                        String mvalue = (String) RealLabels.durationGroup.get(mkey);
71                                                        durationClass = mvalue;
72                                                        break;
73                                                }
74                                        }
75       
76                                        // get fault class
77                                        LinkedList<Double> ll2 = new LinkedList<Double>(
78                                                        RealLabels.failureCause.keySet());
79                                        Collections.sort(ll2);
80                                        Iterator iterator2 = ll2.iterator();
81                                        while (iterator2.hasNext()) {
82                                                double mkey = (Double) iterator2.next();
83                                                if (failure <= mkey) {
84                                                        String mvalue = (String) RealLabels.failureCause.get(mkey);
85                                                        faultClass = mvalue;
86                                                        break;
87                                                }
88                                        }
89       
90                                        if(faultClass.compareTo("") == 0)
91                                                faultClass = "TYPING";
92       
93                                        DataBag output = DefaultBagFactory.getInstance().newDefaultBag();
94                                        Tuple t = DefaultTupleFactory.getInstance().newTuple(1);
95                                        String label = durationClass + " event - " + faultClass+ " fault";
96                                        //System.out.println("label="+label);
97                                        t.set(0, label);
98                                       
99                        output.add(t);
100                        return output;
101                }
102                return null;
103           
104           
105        }catch(Exception e){
106            System.err.println("RealLabelsr: failed to process input; error - " + e.getMessage());
107            e.printStackTrace();
108            return null;
109        }
110
111
112    }
113}
Note: See TracBrowser for help on using the repository browser.