ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド
入力アダプターでのファイルの入力のデータ処理の流れと処理の内容を次の図に示します。
図11-2 ファイルの入力のデータ処理の流れと処理の内容
入力アダプターで扱うデータ形式について,「(1) 入力アダプターで扱うデータ形式」で説明します。また,各処理の詳細について,「(2) ファイル入力コネクターによるファイルの入力」以降で説明します。
入力アダプターで扱うデータ形式には,入力形式レコード,および共通形式レコードがあります。それぞれのデータ形式について説明します。
ファイル入力についての定義は,アダプター構成定義ファイルのファイル入力コネクター定義で定義します。
ファイル入力コネクターでは,入力ファイル格納ディレクトリに格納されている一つ以上のファイルから行単位でデータを読み込んで,入力形式レコードに変換します。ファイル入力コネクターで読み込んだ1行のデータが,1入力形式レコードとなります。
なお,入力アダプターでは複数の入力形式レコードを一度に読み込むことができます。ファイル入力コネクターで読み込んだ入力形式レコード数が,フォーマット変換,マッピング,タプル送信の各処理で一度に処理するレコード数となります。
ここでは,ファイル入力コネクターで読み込む入力ファイルの種類や構成などについて説明します。
ファイル構成 | 説明 | 前提条件 |
---|---|---|
ラップアラウンド | 入力対象のファイル数が固定されている場合に,設定されたファイルの順番に情報を書き込むファイル構成です。すべてのファイルの書き込みが完了すると,最初のファイルを更新して書き込みます。 | 情報を書き込むファイルの順番が決まっていて,必ずその順番で書き込みます。 書き込みが完了したファイルに書き込む場合は,データをクリアしてから新しい情報を書き込みます。 |
非ラップアラウンド | 入力対象のファイル数が固定されていない場合に,設定されたファイルの順番に情報を書き込むファイル構成です。 | 情報を書き込むファイルの順番が決まっていて,必ずその順番で書き込みます。 |
処理モード | 読み込み処理の内容 | |
---|---|---|
読み込み方式 | 読み込み完了条件 | |
バッチ処理モード | 入力アダプターの起動時に,入力ファイル格納ディレクトリに入力ファイルがあるかどうかを確認して,入力ファイルがあった場合に読み込み処理をします。 | 次の条件のどちらかに一致した時点で,読み込みを完了します。
|
リアルタイム処理モード | 入力ファイル格納ディレクトリを一定間隔で監視し,入力ファイルが出現した時点で,逐次読み込み処理をします。 入力ファイル格納ディレクトリの監視間隔,および監視回数はファイル入力コネクター定義のinputタグで定義します。監視回数を超えた場合は,警告メッセージを出力したあと,処理を続行します。 |
次の条件のどちらかに一致した時点で,読み込みを完了します。
|
フォーマット変換についての定義は,アダプター構成定義ファイルのフォーマット変換定義で定義します。
フォーマット変換では,入力形式レコードから意味のある単位(フィールド)に切り出して,共通形式レコードに変換します。
入力形式レコードから共通形式レコードへのフォーマット変換の例を次の図に示します。この例では,入力形式レコードは,空白で区切られた三つのフィールドで構成され,第1フィールドはTIME型,第2,3フィールドは文字列型にフォーマット変換されます。
図11-4 入力形式レコードから共通形式レコードへのフォーマット変換の例
この図の場合の共通形式レコードのレコード構成と指定するフォーマット変換定義のタグを次の表に示します。
レコード構成 | タグ |
---|---|
レコード名:R1 レコード構成:($_time)△($_method)△($_url) |
recordタグ(レコード定義) |
フィールド名:time,型:TIME | fieldタグ(フィールド定義) |
フィールド名:method,型:STRING | |
フィールド名:url,型:STRING |
変換できるデータ型および共通形式レコードのレコード構成の設定については,「9.11.1 フォーマット変換定義」を参照してください。
なお,フォーマット変換では,複数のレコード構成を定義できます。複数のレコード構成が定義された場合は,どのレコード構成に該当するかを自動で選択してフォーマット変換します。
複数のレコード構成が定義された場合,レコード構成は次のように選択されます。
マッピングについての定義は,アダプター構成定義ファイルのマッピング定義で定義します。
マッピングには,レコードとストリーム間のマッピング,およびレコード間のマッピングがあります。それぞれのマッピングの概要を次の表に示します。
表11-2 マッピングの概要
項番 | マッピングの種類 | 説明 |
---|---|---|
1 | レコードとストリーム間のマッピング | マッピングの前のコールバックで出力される共通形式レコード(マッピングの変換元)と,入力ストリームの形式に従った共通形式レコード(マッピングの変換先)との関連づけをします。 レコードとストリーム間のマッピングは,タプル送信の前に必ず実施します。 |
2 | レコード間のマッピング | マッピングの前のコールバックで出力される共通形式レコード(マッピングの変換元)を編集し,マッピングの変換先の共通形式レコードに変換します。 レコード間のマッピングは,フォーマット変換のあと,かつレコードとストリーム間のマッピングの前に,必要に応じて実施します。 マッピングの変換元の共通形式レコードのフィールド名を変更したい場合や,複数のフィールドから次のコールバックの処理に不要なフィールドを削除したい場合などに使用できます。 また,組み込み関数※を使用して,マッピングの変換元の共通形式レコードから文字列や時刻を取得し,取得した文字列や時刻をマッピングの変換先の共通形式レコードに反映することもできます。 なお,レコード間のマッピングは複数定義できます。 |
入力アダプターでのレコードとストリーム間のマッピングの例を次の図に示します。この例では,入力ストリームs1に必要なtimeフィールドとurlフィールドを入力ストリームのスキーマにマッピングして,共通形式レコード(マッピングの変換先)に変換しています。
図11-5 入力アダプターでのレコードとストリーム間のマッピングの例
タプル送信についての定義は,アダプター構成定義ファイルの入力ストリーム定義に定義します。
タプル送信では,マッピング結果を基に,共通形式レコードをタプルに変換したあとで,入力ストリーム定義に従って入力ストリームにタプルを送信します。
入力アダプターから入力ストリームへのタプル送信の例を次の図に示します。この例では,入力ストリームs1にタプルを送信します。
図11-6 入力アダプターからのタプル送信の例
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.