Spark Data Pipe

Spark Data Pipeは、GUIベースのSparkプログラムモデリングツールで、Sparkによる開発のスピードを加速します。

sparkp_edit

Spark Data Pipeによる開発の流れ

他のOI Appsと同様に、Spark Data Pipeのモデリングはブラウザベースのモデリングツール上で行われます。

モデルの編集モード時は、設定した関数をSparkシェルを介してインタラクティブに実行し、結果を確認しながらモデリングを進めていくことができます。

モデルを保存し、モデルの起動を行うと、自動でscalaコードが生成、ビルドされ、ドライバプログラムが実行されます。

Spark Data Pipeを使用した開発の利点

データ入力

Spark Data Pipeを使用した場合の入力データには、バッチ、ストリーミング、クエリーをサポートしますが、特にストリーミングについては、Vitria OIのStream Builderコンポーネントを使用することによりさまざまなタイプのデータソースをサポートします。しかも、コーディングレスで、GUI上の設定のみで実装が可能です。

Spark Data PipeとStream Builderを使用した場合のストリーミングデータ処理実装の利点を以下に挙げます。

  • 外部システムとのインターフェースはStream Builderが担うため、外部システムの変更がSparkの実装に影響を与えません。また、外部システムのトラブルによる影響もSparkプロセスにまでは及びません。
  • Spark ストリーミングでは、KafkaやFlumeといった通知型の外部システムとのみ連携が可能ですが、Stream Builderを使用すれば、RDBやファイルといったポーリング型の外部システムからのデータ取得が可能になります。
  • HDFSファイルのように通常バッチ入力として扱われるシステムに対しても、追加された行を即座に読み込み、ストリーミングデータとして扱うことができます。
  • JSONだけでなく、XML、CSV、固定長フィールド等の様々なデータフォーマットに対応しています。
  • Stream Builderは処理の状態を永続化するため、トラブルにより処理が中断した場合でも、再起動後は最後に処理が成功したデータの次のデータから処理を開始します。

処理結果

Sparkの処理結果を、Vitria OIが提供するルールエンジンやBPMなどのコンポーネントと連携したり、外部システムと連携するためにHive DBなどにデータを出力したりすることも、コーディングレスで実現可能です。
ストリーミング処理/リアルタイム処理を行うシステムは、異常の検知などをリアルタイムに実行することが求められるため、連続稼働する必要があります。また、自動化されたアクションが必要になります。

コード生成

Spark Data Pipeは、データの入出力以外のいくつかの機能についても、GUI上で設定を行うだけでscalaコードを自動生成します。以下に使用可能な関数の例を挙げます。

関数名 機能説明
Parse Spark用データに変換します。
Filter フィールドの値によってフィルターをかけます。
Aggregate Windowを使用した集計。ストリームデータ、バッチデータ両方で使用可能です。
Join 複数パイプの結合。ストリームデータとバッチデータとの結合が可能。ホワイトリスト/ブラックリストによるフィルタリング、エンリッチ処理も可能。
Compute 1データ内で数値フィールドに対し計算を行います。 計算結果は新規フィールドとして追加されます。
RunSQL Spark SQLを実行します。ソースが、Source Table の時のみ使用可能です。
Streaming Table 指定したキーデータごとの最新データのみを保持します。
Adhoc Scalaコードを直接記述します。