List of usage examples for org.apache.hadoop.io DoubleWritable DoubleWritable
public DoubleWritable(double value)
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)); }