Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

A Join stage with n inputs will implemented as n mapToPair() calls on all inputs into the stage, then x - 1 joins (assuming x inputs).

 

Windowing and Reduce can be implemented through a general StreamingTransform API:

Code Block
public interface StreamTransform<IN, OUT> {
 
  public JavaDStream<OUT> transform(JavaDStream<IN> stream) throws Exception;
 
}

For example, a window plugin would be implemented like:

Code Block
public class Window implements StreamTransform<StructuredRecord, StructuredRecord> {
 
  public JavaDStream<StructuredRecord> transform(JavaDStream<StructuredRecord> stream) {
    return stream.window(Durations.millis(conf.durationMS));
  }
 
}

A plugin that computes the sum of a field would be implemented like:

Code Block
public class Sum implements StreamTransform<StructuredRecord, StructuredRecord> {
  public JavaDStream<StructuredRecord> transform(JavaDStream<StructuredRecord> stream) {
    stream.reduce(new Function2<StructuredRecord, StructuredRecord, StructuredRecord>() {
      @Override
      public StructuredRecord call(StructuredRecord v1, StructuredRecord v2) throws Exception {
        return StructuredRecord.builder(conf.getSchema())
         .set(conf.sumField, v1.get(conf.sumField) + v2.get(conf.sumField))
         .build();
      }
    });
  }
}