Versions Compared

Key

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

...

The streamingsource plugin type simply takes a JavaSparkContext and returns a JavaDStream:

Code Block
public interfaceabstract class StreamingSource<T> implements PipelineConfigurable, Serializable {
   public abstract JavaDStream<T> getStream(JavaStreamingContext jssc);
}

...

Code Block
public class TextFileWatcherSource extends implements StreamingSource<StructuredRecord> {
  JavaDStream<StructuredRecord> getStream(JavaStreamingContext jssc) {
    return jssc.fileStream(conf.path, LongWritable.class, Text.class, TextInputFormat.class)
      .map(new TextToStructuredRecordFunction());
  }
}

...

The streamingsink plugin type simply takes a JavaDStream and a context and performs some operation on it:

Code Block
public interfaceabstract class StreamingSink<T> implements PipelineConfigurable, Serializable {
  public abstract void write(JavaDStream<T> stream, JavaSparkExecutionContext jsec);
}

...

A reduce function plugin will reduce all the records in a window into a single record.

Code Block
public interfaceabstract ReduceFunction<T> implements Serializable {
  public abstract T reduce(T record1, T record2);
}

...

Windowing can be implemented through a general StreamingTransform API:

Code Block
public abstract interfaceclass StreamTransform<IN, OUT> implements PipelineConfigurable, Serializable {
 
  public abstract JavaDStream<OUT> transform(JavaDStream<IN> stream) throws Exception;
 
}

...

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