-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/29754/
-----------------------------------------------------------

(Updated Jan. 31, 2015, 2:02 a.m.)


Review request for samza, Chris Riccomini, Jay Kreps, Milinda Pathirage, Navina 
Ramesh, and Naveen Somasundaram.


Changes
-------

Missed last bit of comment: removing -d 64 in build.gradle


Bugs: SAMZA-482
    https://issues.apache.org/jira/browse/SAMZA-482


Repository: samza


Description
-------

Overview of the proposal:
- 4 different types of operators implemented via 2 interface classes:
   * stream-to-relation operators implementing TupleOperator interface and 
generate Relation output. E.g. Window operators
   * stream-to-stream operators implementing TupleOperator interface and 
generate Tuple output. E.g. Partition operators
   * relation-to-relation operators implementing RelationOperator interface and 
generate Relation output. E.g. All relational algebra operators, s.t. join, 
where, group-by, select, etc.
   * relation-to-stream operators implementing RelationOperator interface and 
generate Tuple output. E.g. Istream or Dstream operators

Those operators are connected via the following two context interface classes:
- RuntimeSystemContext which provides a context interface for the operators to 
send their output to
- OperatorRoutingContext which provides the connection interface between the 
operators

In the example, we have enabled two execution models via the above two context 
classes:
- RoutableRuntimeContext that uses the routing information from a 
OperatorRoutingContext and directly invoking the next operator when the current 
operator send its output via the RoutableRuntimeContext
- StoredRuntimeContext that provides a storage for each operator's outputs that 
stored the output when the current operator send its output via 
StoredRuntimeContext. 

Then, it is up to the programmer to query the StoredRuntimeContext to get the 
operator's output and proceed w/ the next steps
The first execution model allows the integration w/ future SQL parser and 
planner to automatically run a task, while the second model allows a random 
programmer to use the operators from the library in a random context.
  
  
2nd draft of SQL operator API
- Simplified data object interface
   * NOTE that the following two issues are still pending revision: i) nested 
data struct / schema; ii) multiple schema in a single stream?
- Simplified operator constructor
   * provided simple constructor of build-in operators w/o the need to use spec 
object and factory
- Added runtime context to allow operators to send out their output
   * this reduced the types of the operators to only two: RelationOperator and 
TupleOperator
- Added optional routing context to connect operators to each other
- Added two examples: 
   * i) a fully specified application that generates operators via factory and 
automatically executes the operators via routing context
   * ii) a "random" application that construct operators on-fly and use the 
runtime context to get the intermediate results back


Diffs (updated)
-----

  build.gradle 7a40ad4ae916610186848c06c4577e7067de98ee 
  gradle/dependency-versions.gradle 44dd42603e93788562fd64c68312570cee71a2aa 
  samza-sql/README PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/data/EntityName.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/data/Relation.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/data/Tuple.java PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/operators/Operator.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/api/operators/RelationOperator.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/api/operators/SqlOperatorFactory.java
 PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/operators/TupleOperator.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/api/operators/spec/OperatorSpec.java
 PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/api/router/OperatorRouter.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/data/IncomingMessageTuple.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/factory/SimpleOperator.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/factory/SimpleOperatorFactoryImpl.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/factory/SimpleOperatorSpec.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/partition/PartitionOp.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/partition/PartitionSpec.java
 PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/operators/relation/Join.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/operators/relation/JoinSpec.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/stream/InsertStream.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/stream/InsertStreamSpec.java
 PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/window/BoundedTimeWindow.java
 PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/operators/window/WindowSpec.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/sql/operators/window/WindowState.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/sql/router/SimpleRouter.java 
PRE-CREATION 
  
samza-sql/src/main/java/org/apache/samza/task/sql/OperatorMessageCollector.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/task/sql/SqlMessageCollector.java 
PRE-CREATION 
  samza-sql/src/main/java/org/apache/samza/task/sql/StoreMessageCollector.java 
PRE-CREATION 
  samza-sql/src/test/java/org/apache/samza/task/sql/RandomOperatorTask.java 
PRE-CREATION 
  samza-sql/src/test/java/org/apache/samza/task/sql/StreamSqlTask.java 
PRE-CREATION 
  settings.gradle 3a01fd66359b8c79954ae8f34eeaf4b2e3fdc0b4 

Diff: https://reviews.apache.org/r/29754/diff/


Testing
-------

run ./bin/check-all.sh passed


Thanks,

Yi Pan (Data Infrastructure)

Reply via email to