you can make use of a WorkerContext. There is one per worker, and you can
put your factory there. The factory can make use of the Mapper.Context
class from getContext(), and make use of the methods inherited from the
TaskAttemptContext class (e.g. the unique task id) to get some form of
"worker id".

hope this helps.


On Thu, Jul 4, 2013 at 8:18 AM, Christian Krause <m...@ckrause.org> wrote:

> Yes, that would be perfectly fine. How can I do this? Specifically, how do
> I get the ID of the worker? And can I then just use a counter field in my
> computation which I increase whenever I need a new ID?
>
> (So my global ID would be a pair of the worker ID and the number I derived
> from incrementing the counter).
>
> Cheers,
> Christian
>
>
> 2013/7/3 Avery Ching <ach...@apache.org>
>
>> What are the requirements of your global ids?  If they simply need to be
>> unique, you can split the id space across workers and assign them
>> incrementally.
>>
>>
>> On 6/30/13 1:09 AM, Christian Krause wrote:
>>
>>> Hi,
>>>
>>> I was wondering if there is a way to register a global factory for new
>>> vertex IDs. Currently, I have to come up with new IDs in my compute method
>>> which does work, but with the penality that the required memory for vertex
>>> IDs is unnecessarily high. If there was a global vertex ID factory I could
>>> just keep a global counter and increase it by one when I need a new ID. Is
>>> something like that possible, or does it conflict with the BSP computation
>>> model? The thing is, in the end vertex ID collisions are detected by
>>> Giraph, so why not allow also a global vertex ID factory...
>>>
>>> Cheers,
>>> Christian
>>>
>>
>>
>


-- 
   Claudio Martella
   claudio.marte...@gmail.com

Reply via email to