SparkReceiver IO

SparkReceiverIO is a transform for reading data from an Apache Spark Receiver as an unbounded source.

Spark Receivers support

SparkReceiverIO currently supports Apache Spark Receiver.

Requirements for Spark Receiver:

For more details please see SparkReceiverIO readme.

Streaming reading using SparkReceiverIO

In order to read from Spark Receiver you will need to pass:

You can easily create receiverBuilder object by passing the following parameters:

For example:

//In this example, MyReceiver accepts a MyConfig object as its only constructor parameter. MyConfig myPluginConfig = new MyConfig(authToken, apiServerUrl); Object[] myConstructorArgs = new Object[] {myConfig}; ReceiverBuilder<String, MyReceiver<String>> myReceiverBuilder =  new ReceiverBuilder<>(MyReceiver.class)  .withConstructorArgs(myConstructorArgs);

Then you will be able to pass this receiverBuilder object to SparkReceiverIO.

For example:

SparkReceiverIO.Read<String> readTransform =  SparkReceiverIO.<String>read()  .withGetOffsetFn(Long::valueOf)  .withSparkReceiverBuilder(myReceiverBuilder) p.apply("readFromMyReceiver", readTransform);

Read data with optional parameters

Optionally you can pass the following optional parameters:

For example:

SparkReceiverIO.Read<String> readTransform =  SparkReceiverIO.<String>read()  .withGetOffsetFn(Long::valueOf)  .withSparkReceiverBuilder(myReceiverBuilder)  .withPullFrequencySec(1L)  .withStartOffset(1L)  .withTimestampFn(Instant::parse); p.apply("readFromReceiver", readTransform);

Examples for specific Spark Receiver

CDAP Hubspot Receiver

ReceiverBuilder<String, HubspotReceiver<String>> hubspotReceiverBuilder =  new ReceiverBuilder<>(HubspotReceiver.class)  .withConstructorArgs(hubspotConfig); SparkReceiverIO.Read<String> readTransform =  SparkReceiverIO.<String>read()  .withGetOffsetFn(GetOffsetUtils.getOffsetFnForHubspot())  .withSparkReceiverBuilder(hubspotReceiverBuilder) p.apply("readFromHubspotReceiver", readTransform);