Gaurav, I am doing the exact thing which you suggested. But limitation here is I need to wait for next partitioning call to aggregate old value and re-distribute to new partitions. And the next partitioning may not happen for long time.
Pramod, Having a different operator could be an overhead for this simple usecase. -Priyanka On Wed, Sep 23, 2015 at 11:48 AM, Chandni Singh <[email protected]> wrote: > Pramod, > > Tim's discussion was about setting a property on multiple operators > (different logical operators). > Priyanka's question is about different partitions of an operator > > Let's say they are 5 partitions of an operator and we need to change an int > property. There are following ways: > > 1. Divide the int property by 5 and issue set-physical operator property > command for each partition. This is manual. > > 2. Set the logical operator property but wait till partition happens. This > will require partitioning to be triggered for which a StatsListener needs > to be implemented. So if partitioning never happens this will never be > triggered. Also un-deploying and deploying a partition just to change a > property on the physical partition seems un-necessary > > 3. Implementing StatsListener to send operator request and not re-partition > seems to be appropriate way. > > Chandni > > On Tue, Sep 22, 2015 at 11:02 PM, Pramod Immaneni <[email protected]> > wrote: > > > Priyanka you want to divide the value among existing partitions right and > > not necessarily change the number of partitions. To this end Ashwin is > > suggesting makes sense. However different partitions can be at different > > windows and will see the value change in different windows. You need a > > separate operator to receive this change and propagate it to the > partitions > > via data flow. Tim discussed this over the last weekend in a series of > > emails. > > > > Thanks > > > > On Tue, Sep 22, 2015 at 10:43 PM, Priyanka Gugale < > > [email protected]> > > wrote: > > > > > Thanks for suggestions. > > > > > > Ashwin, The option you proposed is doable, but then each operator which > > > needs to address such use case will have to track the number of > > partitions. > > > So we were looking for some common mechanism. > > > Chandni, Let me try the res.operatorRequests, that could solve the > > problem. > > > > > > -Priyanka > > > > > > On Tue, Sep 22, 2015 at 8:05 PM, Chandni Singh < > [email protected]> > > > wrote: > > > > > > > Hi Priyanka, > > > > > > > > As Isha mentioned you will can implement a StatsListener. However > > instead > > > > of setting res.repartitionRequired = true, you can add a > > > > StatsListener.OperatorRequest to res.operatorsRequests. This will not > > > > re-deploy the instances. > > > > > > > > The OperatorRequest that you will need to implement will have to > change > > > the > > > > property value. > > > > > > > > You can refer to AutoMetricTest for an example. > > > > > > > > - Chandni > > > > > > > > On Tue, Sep 22, 2015 at 7:11 AM, Ashwin Chandra Putta < > > > > [email protected]> wrote: > > > > > > > > > Why not maintain a variable containing the number of partitions in > > each > > > > > partition; and when you set the property, just divide it by number > of > > > > > partitions variable? Does it not solve the problem? > > > > > > > > > > Regards, > > > > > Ashwin. > > > > > > > > > > On Tue, Sep 22, 2015 at 5:37 AM, Priyanka Gugale < > > > > [email protected] > > > > > > > > > > > wrote: > > > > > > > > > > > I have an integer property named "intProp". This property is > > > applicable > > > > > to > > > > > > an operator A. I can set the property from dtcli using > > > > > > "set-operator-property operator-name property-name > property-value" > > > and > > > > > this > > > > > > will get applied to all instances of opeartor A. > > > > > > > > > > > > Now, I want to apply this property in a way that it's equally > > divided > > > > > > amongst all instances of operator A. For example, if intProp=100 > > and > > > > > > number of partitions=4 then intProp=25 should be set on each > > instance > > > > of > > > > > > operator A. > > > > > > > > > > > > Is there a way to achieve this? > > > > > > > > > > > > I have tried following approach to do this: I have overriden > > > > > > definePartitions of Operator, once we do partitioning I am > setting > > > > right > > > > > > value on each operator instance based on new partition count. The > > > > > > limitation here is that the value is applied during > > definePartitions. > > > > If > > > > > > the value is updated dynamically it won't be applied till > > > > > definePartitions > > > > > > is called again. > > > > > > > > > > > > -Priyanka > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > Regards, > > > > > Ashwin. > > > > > > > > > > > > > > >
