Grainier Perera created STREAMPIPES-292:
-------------------------------------------

             Summary: Introduce event windowing to the StreamPipes core/sdk
                 Key: STREAMPIPES-292
                 URL: https://issues.apache.org/jira/browse/STREAMPIPES-292
             Project: StreamPipes
          Issue Type: New Feature
          Components: Backend
            Reporter: Grainier Perera


h3. +*Apache StreamPipes*+

Apache StreamPipes (incubating) is a self-service (Industrial) IoT toolbox to 
enable non-technical users to connect, analyze and explore IoT data streams. 
StreamPipes offers several modules including StreamPipes Connect to easily 
connect data from industrial IoT sources, the Pipeline Editor to quickly create 
processing pipelines and several visualization modules for live and historic 
data exploration. Under the hood, StreamPipes utilizes an event-driven 
microservice paradigm of standalone, so-called analytics microservices making 
the system easy to extend for individual needs.
h3. +*Background*+

Currently, window logic can be individually defined per pipeline element. The 
whole windowing logic needs to be declared in the controller and runtime logic 
needs to be individually added based on the selected runtime wrapper (Java, 
Siddhi, Flink, etc...).

As many data processors benefit from using window-functions (i.e PEs such as 
Event Counter, Count Aggregation, Rate Limiter), windowing logic is often 
duplicated as it needs to be implemented for every new pipeline element. In 
addition, the feature set of supported window operators differs (and often 
depends on the developer) as it is unclear which windows and parameters 
should/can be offered.  

Therefore, adding support for explicit window semantics to the SDK/Core would 
make implementing data processors and sinks using windows much easier and less 
error-prone. 
+**+
h3. +*Tasks*+
 # Design and introduce new processor and controller classes for windowed event 
processors (e.g., WindowedDataProcessor) which handle the windowing logic 
internally and only expose the higher-level methods to users (i.e 
onCurrentEvent, onExpiredEvent, etc...).
 # Implement internal logic for few window functions (i.e TimeWindow, 
LengthWindow, TimeBatchWindow, LengthBatchWindow, etc...)
 # Write a few sample pipeline-elements using your new API!

h3. +*Relevant Skills*+
 * Basic knowledge in StreamPipes core (cloning the repo, going through the 
codebase/documents would do).
 * Basic knowledge of stream analytics window functions (this is not a must, 
but it's awesome if you know your way around analytics window functions).
 * Some Java experience.

h3. +*Learning Material*+

+For StreamPipes:+
 * [https://streampipes.apache.org/docs/]
 * [https://streampipes.apache.org/media.html]
 * [https://github.com/apache/incubator-streampipes]
 * [https://github.com/apache/incubator-streampipes-extensions]

+For Streaming Analytics:+
 * 
[https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-window-functions]
 * 
[https://www.mikulskibartosz.name/difference-between-tumbling-and-sliding-window/]
 * 
[https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.5/developing-storm-applications/content/understanding_sliding_and_tumbling_windows.html]

+For the context for the issue:+
 * [https://www.mail-archive.com/[email protected]/msg00868.html]


+*Mentor*+

- Grainier Perera.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to