Hi Dan and Anil ,
Thanks for the clarification.

Dan,

I think your explanation  makes it clear to me how to go about it.

Just as a clarification in the geode doc there are mentions of you can
execute functions "*On a specific server or set of servers", *which I
imagine is pretty useful, but in my usecase I don't know which actual node
has the data but want to execute code on collocated data. So it appears to
me that the filer example will work and that is great for my usecase.

Regards



On Wed, Dec 14, 2016 at 11:26 PM, Dan Smith <[email protected]> wrote:

> Hi Amit,
>
> You can target a particular stock or stocks by using the filter arguments
> of a function. For example FunctionService.onRegion(myReg
> ion).withFilter(myStock).execute(...). Your function will then be sent to
> the node or nodes that have that particular stock. If you pass more than
> one stock, you function will be executed in parallel on different nodes.
> Within each execution, you can use RegionFunctionContext.getFilter() to
> get the list of stocks that should be handled on that node.
>
> I'm not quite sure I understand what you mean when you say you don't know
> what region the data is in. Do you have multiple, colocated regions that
> you need to examine? If the data is colocated then the above technique
> should still work, you can access all of the colocated regions from within
> your function as well.
>
> -Dan
>
> On Wed, Dec 14, 2016 at 9:52 AM, Anilkumar Gingade <[email protected]>
> wrote:
>
>> Amit,
>>
>> >> But I don't know which regions has the data.
>>
>> The data aware function routing is supported using the region name and
>> keys...In your case, since you don't know the region, you have to execute
>> the function on all nodes and identify the region.
>>
>> Just curious, how are injecting data into the regions? can you identify
>> the region names using keys?
>>
>> -Anil.
>>
>>
>>
>>
>>
>>
>>
>> On Wed, Dec 14, 2016 at 9:39 AM, Amit Pandey <[email protected]>
>> wrote:
>>
>>> hey Anil,
>>>
>>> Thanks. My case is data dependent. But I don't know which regions has
>>> the data. But I would like the code to go and execute to the node where it
>>> is located.
>>>
>>> I see this in that doc :- "* a region—*If you are executing a
>>> data-dependent function, specify a region and, optionally, a set of keys on
>>> which to run the function. The method FunctionService.onRegion()
>>> directs a data-dependent function to execute on a specific region."
>>>
>>> So does it mean if I specify a set of keys, the code will be executed at
>>> the place where the data is located?
>>>
>>> Regards
>>>
>>> On Wed, Dec 14, 2016 at 10:49 PM, Anilkumar Gingade <[email protected]
>>> > wrote:
>>>
>>>> Amit,
>>>>
>>>> Yes, it does what you are looking for...
>>>>
>>>> You can find more about function execution at:
>>>> http://geode.apache.org/docs/guide/developing/function_exec/
>>>> how_function_execution_works.html
>>>>
>>>> If you have further question don't hesitate to ask.
>>>>
>>>> -Anil.
>>>>
>>>>
>>>>
>>>> On Wed, Dec 14, 2016 at 9:04 AM, Amit Pandey <[email protected]
>>>> > wrote:
>>>>
>>>>> Hey All,
>>>>>
>>>>> I want to know does Geode functions execute on collocated data. My
>>>>> usecase is that I have portioned cache and I want to do some computations
>>>>> in parallel in all the nodes.
>>>>>
>>>>> Now does Geode automatically distribute functions so that the code
>>>>> only works on data in a particular node?
>>>>>
>>>>> Or is there mechanism to do so?
>>>>>
>>>>> I think an example will make it clear. Lets say I have some stocks and
>>>>> their prices in a cache. Now I want to do some calculations , so can I
>>>>> redirect code to be executed on the node holding the data for Pivotal 
>>>>> stock
>>>>> automatically?
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to