1 カスタム・ステージおよびカスタム関数の開発
カスタム・ステージ・タイプまたはカスタム関数を使用すると、一般的なステージおよび関数では使用できない機能を開発できます。たとえば、一般的でない計算、変換、アルゴリズムなどです。
たとえば、MD5アルゴリズムを使用してメッセージ・ダイジェストを計算するとします。このアルゴリズムは、組込み関数ライブラリに含まれておらず、またこれを式として実装するのは現実的ではありません。
カスタム・ステージ・タイプおよびカスタム関数は、osa.spark-cql.extensibility.api.jar
ライブラリ内に提供されているインタフェース、クラスおよび注釈を使用して、Javaプログラミング言語で実装します。このjarファイルは、インストール・フォルダosa-base/extensibility-api/osa.spark-cql.extensibility.api.jar
からダウンロードできます。詳細は、Oracle Stream AnalyticsにおけるSparkのCQLに対する拡張機能を参照してください。
カスタム・ステージ・タイプの場合、EventProcessor
インタフェースを実装し、クラス宣言に@OsaStage
注釈を適用する必要があります。入力イベントを取得して出力イベントを返すprocessEvent()
メソッドを実装する必要があります。両方とも、それぞれ入力仕様と出力仕様を使用して定義する必要があります。
カスタムjarの作成
カスタムjarは、パイプライン内で使用されるカスタム・ステージ・タイプまたはカスタム関数のJavaクラスが含まれる、ユーザー提供のJarアーカイブです。
カスタム・ステージ・タイプ
カスタム・ステージは、パイプライン内のストリーム・データにカスタム・ステージ・タイプを適用できるステージ・タイプです。その動作は、データが入って出ていく他のステージ・タイプと同様です。ストリームにロジックが適用される前にいくつかのパラメータを構成するように要求される点で、パターン・ステージと似ています。
カスタム関数
カスタムjarを追加するとインストールされる関数は、カスタム関数と呼ばれます。
カスタム関数は、インストールすると式ビルダーで使用可能になります。カスタム関数は、「カスタム」カテゴリの下にリストされます。これらの関数には、Oracle Stream Analytics内の即時利用可能な関数と同じようにアクセスできます。
制限
この項では、カスタム・ステージおよびカスタム関数の制限と制約を示します。
カスタム・ステージ・タイプおよびカスタム関数の条件は、次のとおりです。
-
ステートレス変換にのみ使用されること。ステージ・タイプまたは関数に対する以前の呼び出しからの状態へのアクセスは保証できず、最適化に基づいて変わる可能性があります。
-
ブロッキング呼出しを使用しないこと。
-
新しいスレッドを開始しないこと。
-
スレッド同期プリミティブ(wait()メソッドを含む)を使用しないこと。このメソッドを使用すると、デッドロックが発生する可能性があります。
-
完全修飾クラス名を持つか、その一部であること。
カスタム・ステージまたはカスタム関数を使用する際には、ヒープ領域の使用量に注意してください。
注意:
結果として生成されるjarには必要なすべての依存関係およびサード・パーティ・クラスが含まれる必要があり、また、jarファイルのサイズは160 MB未満である必要があります。