Subject: Review Request 29994: WIP: first draft of Schema API and one example implementation via Avro



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

Review request for samza, Chris Riccomini, Jay Kreps, Milinda Pathirage, Navina Ramesh, and Naveen Somasundaram.
Bugs: SAMZA-484
    https://issues.apache.org/jira/browse/SAMZA-484
Repository: samza
Description
-------

WIP: first draft of Schema API and one example implementation via Avro

Overview of the tuple schema design:
- Defined a general Schema interface to described the supported methods of data schema in a Tuple
   - the Schema interface supports primitive data types and three advanced data types: array, map, and struct and allows nested data structure (i.e. a field in struct schema could be another schema as well)
   - Schema interface defines a read() method that convert a generic Object into a schema-specific data object
   - Schema interface defines a transform() method that convert a input data w/ other schema into a data object that conforming to the current schema format
- Defined a general Data interface to describe the supported methods of the data content in a Tuple
   - The Data interface defines all access methods to the actual value of the data content, according to all types supported by Schema
   - It also provides interface to access the corresponding Schema object associated with the Data
- Implementation of Schema and Data interface with Avro schema classes as an example
   - AvroSchema and AvroData are corrsponding implementation for Avro classes
Diffs
-----

  samza-sql/src/main/java/org/apache/samza/sql/api/data/Data.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/Schema.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/data/avro/AvroData.java PRE-CREATION
  samza-sql/src/main/java/org/apache/samza/sql/data/avro/AvroSchema.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/stream/InsertStream.java PRE-CREATION
  samza-sql/src/main/java/org/apache/samza/sql/operators/window/BoundedTimeWindow.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/data/SystemInputTuple.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/operators/routing/SimpleRoutingContext.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/store/SqlContextManager.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/task/RandomOperatorTask.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/task/RoutableRuntimeContext.java PRE-CREATION
  samza-sql/src/test/java/org/apache/samza/sql/task/StoredRuntimeContext.java PRE-CREATION

Diff: https://reviews.apache.org/r/29994/diff/
Testing
-------
Thanks,

Yi Pan (Data Infrastructure)