Example usage for org.apache.hadoop.io DoubleWritable DoubleWritable

List of usage examples for org.apache.hadoop.io DoubleWritable DoubleWritable

Introduction

In this page you can find the example usage for org.apache.hadoop.io DoubleWritable DoubleWritable.

Prototype

public DoubleWritable(double value) 

Source Link

Usage

From source file:it.uniroma1.bdc.piccioli.tesi.TriangleCounting.java

License:Apache License

@Override
public void compute(Vertex<Text, Text, NullWritable> vertex, Iterable<Text> messages) throws IOException {

    if (getSuperstep() == 0) {

        //costruisco Text lista vicini
        Text neigborhood = new Text();

        Iterable<Edge<Text, NullWritable>> edges = vertex.getEdges();

        for (Edge<Text, NullWritable> edge : edges) {
            neigborhood.set(neigborhood.toString() + "-" + edge.getTargetVertexId().toString());
        }//from w  w w  .ja v a2s.co  m

        for (Edge<Text, NullWritable> edge : edges) {
            this.sendMessage(edge.getTargetVertexId(), neigborhood);
        }

    } else if (getSuperstep() == 1) {

        Double T = 0.0;

        //confronto edge "mancanti" inviati con lista vicini nodo
        for (Text message : messages) {
            String[] msgSplit = message.toString().split("-");//lista neigbohood

            Iterable<Edge<Text, NullWritable>> edges = vertex.getEdges();

            for (Edge<Text, NullWritable> edge : edges) {
                for (String missEdge : msgSplit) {
                    if (missEdge.equals(edge.getTargetVertexId().toString())) {
                        T++;
                    }
                }
            }

        }

        T = T / 6;

        //send aggragate value
        aggregate(SOMMA, new DoubleWritable(T));

        vertex.setValue(new Text(T.toString()));
        vertex.voteToHalt();

    }

}

From source file:it.uniroma1.bdc.piccioli.tesi.TriangleCountMasterCompute.java

License:Apache License

@Override
public void initialize() throws InstantiationException, IllegalAccessException {
    registerPersistentAggregator(SOMMA, DoubleSumAggregator.class);
    setAggregatedValue(SOMMA, new DoubleWritable(0));
    System.out.println("MasterCompute initialize");
}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.ksimplecycle.AllKSimpleCycle.java

License:Apache License

@Override
public void compute(Vertex<Text, TextValueAndSetPerSuperstep, NullWritable> vertex,
        Iterable<CustomMessageWithPath> messages) throws IOException {

    //        int k = 5; //circuiti chiusi di lunghezza k
    long superstep = getSuperstep();

    if (superstep == 0) {

        for (Edge<Text, NullWritable> edge : vertex.getEdges()) {

            CustomMessageWithPath msg = new CustomMessageWithPath();

            msg.getVisitedVertex().add(vertex.getId());
            msg.setSourceVertex(vertex.getId());

            sendMessage(edge.getTargetVertexId(), msg);
        }//from   w  ww  . j ava2  s .co  m

    } else if (superstep > 0 /*&& superstep <= k*/) {
        //invio solo messaggi coerenti 

        Double T = 0.0;
        for (CustomMessageWithPath message : messages) {
            if (!message.getVisitedVertex().contains(vertex.getId())) {

                message.getVisitedVertex().add(vertex.getId());

                for (Edge<Text, NullWritable> edge : vertex.getEdges()) {
                    // TODO: controllo per prevedere se il vertice scarter il msg
                    //                    LOG.info(vertex.getId() + " compare: " + edge.getTargetVertexId());
                    //                        if (!message.getVisitedVertex().contains(edge.getTargetVertexId())) {

                    //                            LOG.info(vertex.getId() + " send: " + edge.getTargetVertexId());
                    Text ed = edge.getTargetVertexId();
                    //                        if (!message.getVisitedVertex().contains(ed)) {
                    sendMessage(ed, message);
                    //                        }
                    //                        }
                }
            }
            //conto i cicli semplici rilevati nel superstep corrente
            if (message.getSourceVertex().toString().equals(vertex.getId().toString())) {
                T++;
            }
        }

        T = T / (2 * superstep);

        vertex.getValue().getSetPerSuperstep().put(new LongWritable(superstep), new DoubleWritable(T));
        aggregate(SOMMA + superstep, new DoubleWritable(T));

        vertex.voteToHalt();

    }
}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.ksimplecycle.AllKSimpleCycleAggregateMsg.java

License:Apache License

@Override
public void compute(Vertex<Text, TextValueAndSetPerSuperstep, NullWritable> vertex,
        Iterable<CustomMessageWithAggregatedPath> messages) throws IOException {

    //        int k = 5; //circuiti chiusi di lunghezza k
    long superstep = getSuperstep();

    if (superstep == 0) {

        for (Edge<Text, NullWritable> edge : vertex.getEdges()) {

            CustomMessageWithAggregatedPath msg = new CustomMessageWithAggregatedPath();

            //primo elemento lista = vertice che genera il msg
            msg.getVisitedVertex().add(new HashSet<Text>());
            msg.getVisitedVertex().get(0).add(vertex.getId());

            sendMessage(edge.getTargetVertexId(), msg);
        }/*from w  ww  .j a v a2 s .c  o  m*/

    } else if (superstep > 0 /*&& superstep <= k*/) {
        //invio solo messaggi coerenti 

        Double T = 0.0;
        for (Edge<Text, NullWritable> edge : vertex.getEdges()) {
            CustomMessageWithAggregatedPath nextMsg = new CustomMessageWithAggregatedPath();
            for (CustomMessageWithAggregatedPath message : messages) {

                for (HashSet<Text> item : message.getVisitedVertex()) {
                    if (!item.contains(vertex.getId())) {
                        item.add(vertex.getId());
                        nextMsg.getVisitedVertex().add(item);
                    } else {
                        T++;
                        message.getVisitedVertex().remove(item);
                        break;
                    }
                }

            }
            if (!nextMsg.getVisitedVertex().isEmpty()) {
                sendMessage(edge.getTargetVertexId(), nextMsg);
            }
        }
        T = T / (2 * superstep);
        vertex.getValue().getSetPerSuperstep().put(new LongWritable(superstep), new DoubleWritable(T));
        aggregate(SOMMA + superstep, new DoubleWritable(T));
        vertex.voteToHalt();

    }

}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.ksimplecycle.KSimpleCycle_StoreInValue.java

License:Apache License

@Override
public void compute(Vertex<Text, TextAndHashes, NullWritable> vertex, Iterable<CustomMessage> messages)
        throws IOException {

    int k = 5; //circuiti chiusi di lunghezza k
    //        LOG.info("LOG HASHES " + vertex.getValue().getGeneratedHash().size() + "\t" + vertex.getValue().getSeenHash().size());

    if (getSuperstep() == 0) {

        for (Edge<Text, NullWritable> edge : vertex.getEdges()) {

            //                int hsg = edge.hashCode();//TODO: da controllare
            String rnd = RandomStringUtils.random(32);//TODO: da controllare
            int hsg = rnd.hashCode();
            //                LOG.info("SEND TO ALL EDGE\t" + hsg);

            vertex.getValue().getGeneratedHash().add(hsg);

            CustomMessage msg = new CustomMessage(vertex.getId(), hsg);
            sendMessage(edge.getTargetVertexId(), msg);
        }//from   w ww . j a v a 2s.co m

    } else if (getSuperstep() > 0 && getSuperstep() < k) {

        for (CustomMessage message : messages) {
            //                LOG.info(vertex.getId() + " RECEIVED MSG FROM " + message.getSource() + " CONTEINED " + message.getMessage());

            //Scarto messaggi contenente l'id del vertice durante i passi intermedi

            //init set relativo arco entrante al primo messaggio ricevuto
            if (!vertex.getValue().getSeenHash().containsKey(message.getSource())) {
                vertex.getValue().getSeenHash().put(message.getSource(), new HashSet<Integer>());
            }

            if (!vertex.getValue().getGeneratedHash().contains(message.getMessage()) && !vertex.getValue()
                    .getSeenHash().get(message.getSource()).contains(message.getMessage())) {

                vertex.getValue().getSeenHash().get(message.getSource()).add(message.getMessage());

                for (Edge<Text, NullWritable> edge : vertex.getEdges()) {
                    //evito "rimbalzo" di messaggi tra 2 vertici vicini
                    //ho eliminato controllo "rimbalzo" perche non puo piu accadare dopo l'introduzione controllo hash msg
                    if (!edge.getTargetVertexId().toString().equals(message.getSource().toString())) {

                        CustomMessage msg = new CustomMessage(vertex.getId(), message.getMessage());

                        //                        LOG.info("SEND MESSAGE " + msg.getMessage() + " FROM " + msg.getSource() + " TO " + edge.getTargetVertexId());
                        sendMessage(edge.getTargetVertexId(), msg);
                    }

                }

                //                    CustomMessage msg = new CustomMessage(vertex.getId(), message.getMessage());
                //                    System.out.println("Propagazione msg\t" + message);
            }
        }

    } else if (getSuperstep() == k) {
        LOG.info(this.printGeneratedHashSet(vertex));
        //            LOG.info(this.printSeenHashSet(vertex));

        Double T = 0.0;
        for (CustomMessage message : messages) {
            LOG.info(vertex.getId() + "\tReceive\t" + message);
            //                System.out.println(vertex.getSource()+"\t"+message);
            if (vertex.getValue().getGeneratedHash().contains(message.getMessage())) {
                T++;
            }
        }
        T = T / (2 * k);

        vertex.setValue(new TextAndHashes(new Text(T.toString())));
        vertex.voteToHalt();
        aggregate(SOMMA, new DoubleWritable(T));

    }

}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.sssp.text.SimpleShortestPathsComputationTextValue.java

License:Apache License

@Override
public void compute(Vertex<Text, DoubleWritable, DoubleWritable> vertex, Iterable<DoubleWritable> messages)
        throws IOException {

    if (getSuperstep() == 0) {
        vertex.setValue(new DoubleWritable(Double.MAX_VALUE));
    }//from   w  w  w  .  j ava2s. c  o  m
    double minDist = isSource(vertex) ? 0d : Double.MAX_VALUE;
    for (DoubleWritable message : messages) {
        minDist = Math.min(minDist, message.get());
    }
    if (LOG.isDebugEnabled()) {
        System.out.println("Vertex " + vertex.getId() + " got minDist = " + minDist + " vertex value = "
                + vertex.getValue());
    }
    if (minDist < new Double(vertex.getValue().toString())) {
        vertex.setValue(new DoubleWritable(minDist));
        for (Edge<Text, DoubleWritable> edge : vertex.getEdges()) {

            double distance = minDist + edge.getValue().get();

            if (LOG.isDebugEnabled()) {
                System.out.println(
                        "Vertex " + vertex.getId() + " sent to " + edge.getTargetVertexId() + " = " + distance);
            }
            sendMessage(edge.getTargetVertexId(), new DoubleWritable(distance));
        }
    }
    vertex.voteToHalt();
}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.trash.TriangleCount_OLD.java

License:Apache License

@Override
public void compute(Vertex<Text, Text, NullWritable> vertex, Iterable<Text> messages) throws IOException {

    if (getSuperstep() == 0) {

        //costruisco Text lista vicini
        Text neigborhood = new Text();

        Iterable<Edge<Text, NullWritable>> edges = vertex.getEdges();

        for (Edge<Text, NullWritable> edge : edges) {
            neigborhood.set(neigborhood.toString() + "-" + edge.getTargetVertexId().toString());
        }/*from w w  w .  j av a  2 s.  c  o  m*/

        for (Edge<Text, NullWritable> edge : edges) {
            this.sendMessage(edge.getTargetVertexId(), neigborhood);
        }

    } else if (getSuperstep() == 1) {

        Double T = 0.0;
        Iterable<Edge<Text, NullWritable>> edges = vertex.getEdges();
        //confronto edge "mancanti" inviati con lista vicini nodo
        for (Text message : messages) {
            String[] msgSplit = message.toString().split("-");//lista neigbohood

            for (Edge<Text, NullWritable> edge : edges) {
                for (String missEdge : msgSplit) {
                    if (missEdge.equals(edge.getTargetVertexId().toString())) {
                        T++;
                    }
                }
            }

        }

        T = T / 6;
        vertex.setValue(new Text(T.toString()));
        vertex.voteToHalt();

        aggregate(SOMMA, new DoubleWritable(T));
        getAggregatedValue(SOMMA);
        System.out.println("DEBUG " + getAggregatedValue(SOMMA));

    }

}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.trianglecount.intwritable.TriangleCount.java

License:Apache License

@Override
public void compute(Vertex<IntWritable, DoubleWritable, NullWritable> vertex, Iterable<IntWritable> messages)
        throws IOException {

    Iterable<Edge<IntWritable, NullWritable>> edges = vertex.getEdges();

    if (getSuperstep() == 0) {

        for (Edge<IntWritable, NullWritable> edge : edges) {
            this.sendMessageToAllEdges(vertex, edge.getTargetVertexId());
        }//  w ww  .ja  v a  2 s  . c  om

    } else if (getSuperstep() == 1) {

        Double T = 0.0;
        Set<Integer> edgeMap = Sets.<Integer>newHashSet();

        for (Edge<IntWritable, NullWritable> edge : edges) {
            edgeMap.add(edge.getTargetVertexId().get());
        }
        for (IntWritable message : messages) {
            if (edgeMap.contains(message.get())) {
                T++;
            }
        }

        T = T / 6;

        vertex.setValue(new DoubleWritable(T));
        vertex.voteToHalt();

        aggregate(SOMMA + getSuperstep(), new DoubleWritable(T));

    }

}

From source file:it.uniroma1.bdc.tesi.piccioli.giraphstandalone.trianglecount.longwritable.TriangleCount.java

License:Apache License

@Override
public void compute(Vertex<LongWritable, DoubleWritable, NullWritable> vertex, Iterable<LongWritable> messages)
        throws IOException {

    Iterable<Edge<LongWritable, NullWritable>> edges = vertex.getEdges();

    if (getSuperstep() == 0) {

        for (Edge<LongWritable, NullWritable> edge : edges) {
            this.sendMessageToAllEdges(vertex, edge.getTargetVertexId());
        }/*from  w  w w .  j  a  v  a 2  s . com*/

    } else if (getSuperstep() == 1) {

        Double T = 0.0;
        Set<Long> edgeMap = Sets.<Long>newHashSet();

        for (Edge<LongWritable, NullWritable> edge : edges) {
            edgeMap.add(edge.getTargetVertexId().get());
        }
        for (LongWritable message : messages) {
            if (edgeMap.contains(message.get())) {
                T++;
            }
        }

        T = T / 6;

        vertex.setValue(new DoubleWritable(T));
        vertex.voteToHalt();

        aggregate(SOMMA + getSuperstep(), new DoubleWritable(T));

    }

}

From source file:it.uniroma1.hadoop.pagerank.job3.PageRankJob3Mapper.java

License:Open Source License

@Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {

    /* Rank Ordering (mapper only)
     * Input file format (separator is TAB):
     * //from  w  ww.jav  a2  s. c  om
     *     <title>    <page-rank>    <link1>,<link2>,<link3>,<link4>,... ,<linkN>
     * 
     * This is a simple job which does the ordering of our documents according to the computed pagerank.
     * We will map the pagerank (key) to its value (page) and Hadoop will do the sorting on keys for us.
     * There is no need to implement a reducer: the mapping and sorting is enough for our purpose.
     */

    int tIdx1 = value.find("\t");
    int tIdx2 = value.find("\t", tIdx1 + 1);

    // extract tokens from the current line
    String page = Text.decode(value.getBytes(), 0, tIdx1);
    float pageRank = Float.parseFloat(Text.decode(value.getBytes(), tIdx1 + 1, tIdx2 - (tIdx1 + 1)));

    context.write(new DoubleWritable(pageRank), new Text(page));

}