In that case I would apply a map to wrap in some common type, like a n
Either<t1,t2> before the union.

And then in the coflatmap you can unwrap it.
On Wed, Aug 19, 2015 at 9:50 AM Welly Tambunan <if05...@gmail.com> wrote:

> Hi Gyula,
>
> Thanks.
>
> However update1 and update2 have a different type. Based on my
> understanding, i don't think we can use union. How can we handle this one ?
>
> We like to create our event strongly type to get the domain language
> captured.
>
>
> Cheers
>
> On Wed, Aug 19, 2015 at 2:37 PM, Gyula Fóra <gyula.f...@gmail.com> wrote:
>
>> Hey,
>>
>> One input of your co-flatmap would be model updates and the other input
>> would be events to check against the model if I understand correctly.
>>
>> This means that if your model updates come from more than one stream you
>> need to union them into a single stream before connecting them with the
>> event stream and applying the coatmap.
>>
>> DataStream updates1 = ....
>> DataStream updates2 = ....
>> DataStream events = ....
>>
>> events.connect(updates1.union(updates2).broadcast()).flatMap(...)
>>
>> Does this answer your question?
>>
>> Gyula
>>
>>
>> On Wednesday, August 19, 2015, Welly Tambunan <if05...@gmail.com> wrote:
>>
>>> Hi Gyula,
>>>
>>> Thanks for your response.
>>>
>>> However the model can received multiple event for update. How can we do
>>> that with co-flatmap as i can see the connect API only received single
>>> datastream ?
>>>
>>>
>>> > ... while external model updates would be tricky to keep consistent.
>>> Is that still the case if the Operator treat the external model as
>>> read-only ? We create another stream that will update the external model
>>> separately.
>>>
>>> Cheers
>>>
>>> On Wed, Aug 19, 2015 at 2:05 PM, Gyula Fóra <gyf...@apache.org> wrote:
>>>
>>>> Hey!
>>>>
>>>> I think it is safe to say that the best approach in this case is
>>>> creating a co-flatmap that will receive updates on one input. The events
>>>> should probably be broadcasted in this case so you can check in parallel.
>>>>
>>>> This approach can be used effectively with Flink's checkpoint
>>>> mechanism, while external model updates would be tricky to keep consistent.
>>>>
>>>> Cheers,
>>>> Gyula
>>>>
>>>>
>>>>
>>>>
>>>> On Wed, Aug 19, 2015 at 8:44 AM Welly Tambunan <if05...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi All,
>>>>>
>>>>> We have a streaming computation that required to validate the data
>>>>> stream against the model provided by the user.
>>>>>
>>>>> Right now what I have done is to load the model into flink operator
>>>>> and then validate against it. However the model can be updated and changed
>>>>> frequently. Fortunately we always publish this event to RabbitMQ.
>>>>>
>>>>> I think we can
>>>>>
>>>>>
>>>>>    1. Create RabbitMq listener for model changed event from inside
>>>>>    the operator, then update the model if event arrived.
>>>>>
>>>>>    But i think this will create race condition if not handle
>>>>>    correctly and it seems odd to keep this
>>>>>
>>>>>    2. We can move the model into external in external memory cache
>>>>>    storage and keep the model up to date using flink. So the operator will
>>>>>    retrieve that from memory cache
>>>>>
>>>>>    3. Create two stream and using co operator for managing the shared
>>>>>    state.
>>>>>
>>>>>
>>>>> What is your suggestion on keeping the state up to date from external
>>>>> event ? Is there some kind of best practice for maintaining model up to
>>>>> date on streaming operator ?
>>>>>
>>>>> Thanks a lot
>>>>>
>>>>>
>>>>> Cheers
>>>>>
>>>>>
>>>>> --
>>>>> Welly Tambunan
>>>>> Triplelands
>>>>>
>>>>> http://weltam.wordpress.com
>>>>> http://www.triplelands.com <http://www.triplelands.com/blog/>
>>>>>
>>>>
>>>
>>>
>>> --
>>> Welly Tambunan
>>> Triplelands
>>>
>>> http://weltam.wordpress.com
>>> http://www.triplelands.com <http://www.triplelands.com/blog/>
>>>
>>
>
>
> --
> Welly Tambunan
> Triplelands
>
> http://weltam.wordpress.com
> http://www.triplelands.com <http://www.triplelands.com/blog/>
>

Reply via email to