Tom,

If it's necessary to store more than one flag though, for example, won't a
custom class be necessary? I'm a beginner too, so I apologize if I'm
incorrect about that. Just to be clarify, to keep persistent data for a
vertex from one superstep to the next, it is necessary to encapsulate it in
the type used for the 'V', right? In other words, if Vivek tries to use a
normal member variable for the Computation class, it won't work will it?

Also, just to point out, there actually isn't too much involved with
writing your own custom vertex class. Here's a quick example
<https://gist.github.com/saltzm/692fba1d3aade035ce9c> to get you started.
Within your compute() method you can access the data in this class by doing

SampleVertexData d = vertex.getValue();

and then using d.setFlag(true) or boolean currentFlag = d.getFlag() for
example.  And your computation class is now something like

public class MyComputation extends BasicComputation<*IdType, *
*SampleVertexData*, *EdgeType, MessageType>* {
    @Override
    public void compute(Vertex<*IdType, **SampleVertexData*, *EdgeType*>
vertex, Iterable<*MessageType> messages) {.....} *

*    ...*

}

As a warning, for this class I'm using Hadoop 0.20.203 and I'm also a
beginner, so take everything I say with a grain of salt, and Tom please
correct me if I'm wrong.

Best of luck,
Matthew


On Mon, Jul 21, 2014 at 11:37 PM, Schweiger, Tom <thschwei...@ebay.com>
wrote:

>  And in answer of :
>
>
> This post also suggests (along with what I described above) to have a
> field in the vertex value itself. For that I need to change the vertex
> input format and also create my own custom vertex class. Is it really
> necessary?
>
> No, you don't need a custom vertex class or vertex input format. You can
> create/initialize the value at the beginning of the first superstep.
>
>  ------------------------------
> *From:* Sardeshmukh, Vivek [vivek-sardeshm...@uiowa.edu]
> *Sent:* Monday, July 21, 2014 2:05 PM
> *To:* user@giraph.apache.org
> *Subject:* Setting variable value in Compute class and using it in the
> next superstep
>
>   Hi, all--
>
>
>  In my algorithm, I need to set a flag if certain conditions hold
> (locally at a vertex v). If this flag is set then execute some other block
> of code *only once*, and do nothing until some other condition is hold.
>
>
>  My question is, can I declare a flag variable in the class where I
> override compute function? I defined the flag as a public variable and
> setting it once the conditions are met but it seems the value is not
> "carried" over to the next superstep.
>
> I dig a little bit in this mailing list and found this
>
> https://www.mail-archive.com/user@giraph.apache.org/msg01266.html
>
>
>  This post also suggests (along with what I described above) to have a
> field in the vertex value itself. For that I need to change the vertex
> input format and also create my own custom vertex class. Is it really
> necessary?
>
>
>  By the way, I am using Giraph 1.1.0 compiled against Hadoop 1.0.3. I was
> able to run SimpleShortestPathComputation successfully.
>
>
>  Here are more technical details of my algorithm: I am trying to
> implement Delta-stepping shortest path algorithm (
> http://dl.acm.org/citation.cfm?id=740136 or
> http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.2200 ). This
> was mentioned in Pregel paper. A vertex "relax" light edges if it belongs
> to the minimum bucket index (of course, aggregators!). Once a vertex is
> done with relaxing light edges it relaxes heavy edges (here is where I need
> a flag) once. A vertex may be "re-inserted" to a newer bucket and may have
> to execute all the steps that I described here again.
>
>
>  Thanks.
>
>
>  Sincerely,
>   Vivek
> A beginner in Giraph (and Java too!)
>
>

Reply via email to