SparkReceiver IO

SparkReceiverIOは、Apache Spark Receiverから無制限のソースとしてデータを読み取るためのトランスフォームです。

Spark Receiverのサポート

SparkReceiverIOは現在、Apache Spark Receiverをサポートしています。

Spark Receiverの要件

詳細については、SparkReceiverIOのREADMEを参照してください。

SparkReceiverIOを使用したストリーミング読み取り

Spark Receiverから読み取るには、以下を渡す必要があります。

以下のパラメータを渡すことで、receiverBuilderオブジェクトを簡単に作成できます。

例:

//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);

その後、このreceiverBuilderオブジェクトをSparkReceiverIOに渡すことができます。

例:

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

オプションのパラメータを使用したデータの読み取り

必要に応じて、以下のオプションのパラメータを渡すことができます。

例:

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

特定の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);