Thanks, Aljoscha for the clarification. I understand that instead of using a flatMap() in the way I am using, I am better off using : * a fold (init, fold_func, window_func) first and then * map to a different type of my choice, inside the window_func, parameterised above
I hope I am correct. If so, you don't need to spend time to comment; ☺otherwise, please give a hint. -- Nirmalya - On Thu, Feb 16, 2017 at 4:12 PM, Aljoscha Krettek [via Apache Flink User Mailing List archive.] <ml-node+s2336050n11665...@n4.nabble.com> wrote: > Hi, > you would indeed use apply(), or better fold(<initial_value>, > <fold_function>, <window_function>) to map the result of folding your > window to some other data type. If you will, a WindowFunction allows > "mapping" the result of your windowing to a different type. > > Best, > Aljoscha > > On Wed, 15 Feb 2017 at 06:14 nsengupta <[hidden email] > <http:///user/SendEmail.jtp?type=node&node=11665&i=0>> wrote: > >> I have gone through this post >> <http://apache-flink-user-mailing-list-archive.2336050. >> n4.nabble.com/WindowedStream-operation-questions-td6006.html> >> , where Aljoscha explains that /mapping/ on WindowedStream is /not/ >> allowed. >> >> So, I think I haven't asked the question properly. Here is (hopefully) a >> better and easier version: >> >> 1. I begin with records of type RawMITSIMTuple. >> 2. When I group them using a Window, I get an >> AllWindowedStream[RawMITSIMTuple]. >> 3. I /fold/ the tuples obtained in the Window, which gives me a >> DataStream[Vector[RawMITSIMTuple]. >> 4. What I need is a DataStream[PositionReport]. So, I need to flatMap >> the >> output of previous step, where I first get hold of each of the >> RawMITSIMTuple and map that to PositionReport. >> >> val positionReportStream = this >> .readRawMITSIMTuplesInjected(envDefault,args(0)) >> .assignAscendingTimestamps(e => e.timeOfReport) >> .windowAll(TumblingEventTimeWindows.of(Time.seconds(30))) >> .fold(Vector[RawMITSIMTuple]())((collectorBin,rawRecord) => { >> collectorBin :+ rawRecord) >> }) >> .flatMap(r => r.map(e => this.preparePositionReport(e))) >> >> This gives me what I want, but I feel this is verbose and inefficient. Am >> I >> thinking correctly? If so, what is a better idiom to use in such cases? >> >> -- Nirmalya >> >> >> >> >> -- >> View this message in context: http://apache-flink-user- >> mailing-list-archive.2336050.n4.nabble.com/Clarification- >> use-of-AllWindowedStream-apply-function-tp11627p11630.html >> Sent from the Apache Flink User Mailing List archive. mailing list >> archive at Nabble.com. >> > > > ------------------------------ > If you reply to this email, your message will be added to the discussion > below: > http://apache-flink-user-mailing-list-archive.2336050. > n4.nabble.com/Clarification-use-of-AllWindowedStream- > apply-function-tp11627p11665.html > To unsubscribe from Clarification: use of AllWindowedStream.apply() > function, click here > <http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=11627&code=c2VuZ3VwdGEubmlybWFseWFAZ21haWwuY29tfDExNjI3fC01NzQyMjQyNDk=> > . > NAML > <http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml> > -- Software Technologist http://www.linkedin.com/in/nirmalyasengupta "If you have built castles in the air, your work need not be lost. That is where they should be. Now put the foundation under them." -- View this message in context: http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Clarification-use-of-AllWindowedStream-apply-function-tp11627p11677.html Sent from the Apache Flink User Mailing List archive. mailing list archive at Nabble.com.