以下、本発明の実施の形態について図面を参照して説明する。
(第1の実施の形態)
図1は、本発明の第1の実施の形態の並列分散処理方法の概要を説明する図である。本実施形態の並列分散処理方法は、系列データ111、並列分散処理制御サーバ101、系列データ処理制御部105、グループ抽出処理実行サーバ141、142、143、データ集約処理実行サーバ171、172によって実現される。
系列データ111は、本実施形態の並列分散処理の処理対象となる系列データである。図1に示す系列データ111は、時刻131と料金所ID132とについて各々値が設定されたデータの集合である。この系列データ111は、系列データ項目(時刻)112の値の順序に並んでいる。
並列分散処理制御サーバ101は、系列データ111に対する並列分散処理を制御する。具体的には、系列データ111を複数のデータのチャンク121、122、123に分割する。また、分割されたデータのチャンク121、122、123の各々を、グループ抽出処理実行サーバ141、142、143に割当てる。
グループ抽出処理実行サーバ141、142、143は、グループ抽出処理を実行する。具体的には、各々のサーバのグループ抽出処理部151、152、153が、自装置に割当てられたデータのチャンク121、122、123に対して、キー定義157、158、159に定義されたキーの値(料金所ID)に従い、開発者がグループの抽出処理方法を定義したユーザ定義プログラム154、155、156によって、キーの値毎にデータをグルーピングする。その結果、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット161、162、163、164、165、166を出力する。図1に示す例では、データのチャンク121、122、123に含まれる料金所ID132の値は「X」又は「Y」のいずれかであり、キー定義157、158、159に定義されたキーの値は料金所IDである。そのため、グループ抽出処理部151、152、153は、料金所IDの値が「X」のときの中間データセット161、163、165及び料金所IDの値が「Y」のときの中間データセット162、164、166を抽出する。
データ集約処理実行サーバ171、172は、データ集約処理を実行する。具体的には、データ集約処理部181、182が、グループ抽出処理実行サーバ141、142、143から、キーの値が同一の中間データセットをバルク転送によって取得する。図1に示す例では、データ集約処理実行サーバ171はキーの値が「X」の中間データセット161、163、165を取得する。一方、データ集約処理実行サーバ172はキーの値が「Y」の中間データセット162、164、166を取得する。その後、中間データセット結合処理部191、193の中間データセットソート処理部195、197が、取得した中間データセットに含まれる系列データ項目である時刻131の順序を判定し、その順序で中間データセットを結合する。その後、ユーザ定義プログラム192、194が、データの集約処理を実行する。なお、ユーザ定義プログラム192、194は、時刻情報196、198の順序にデータが並んでいることを前提として開発者がデータの集約処理方法を定義したデータ集約処理プログラムである。
なお、系列データ処理制御部105は、一連の系列データの処理を制御する。具体的には、系列データ111が系列データ項目(時刻)112の順序に並んだデータであり、各々のグループ抽出処理実行サーバ141、142、143が系列データ項目112の順にデータが並んでいることを前提としないグループ抽出処理を実行するものであり、且つ、各々のデータ集約処理実行サーバ171、172が系列データ項目(時刻)196、198の順序性に注目した処理を実行する並列分散処理アプリケーションであることを判定したとき、その情報をデータ集約処理実行サーバ171、172に通知する。
以上に示すように、本実施形態に係る並列分散処理方法では、まず、並列分散処理制御サーバ101が、系列データ項目112の順序に並んだ系列データ111を複数のデータのチャンク121、122、123に分割する。次に、グループ抽出処理実行サーバ141、142、143が、系列データ項目(時刻)112で並んだデータのチャンク121、122、123に対して、キー定義(料金所ID)157、158、159に定義されたキーの値に従い、系列データ項目112の順序にデータが並んでいることを前提としない中間データセット161、162、163、164、165、166を抽出する。続いて、系列データ処理制御部105が、系列データ111が系列データ項目(時刻)112の順序に並んだデータであり、各々のグループ抽出処理実行サーバ141、142、143が系列データ項目112の順にデータが並んでいることを前提としないグループ抽出処理を実行するものであり、且つ、各々のデータ集約処理実行サーバ171、172が系列データ項目(時刻)196、198の順序性に着目した処理を実行する並列分散処理アプリケーションであることを判定したとき、その情報をデータ集約処理実行サーバ171、172に通知する。続いて、データ集約処理実行サーバ171、172は、中間データセット161、162、163、164、165、166の各々の内部ではデータが系列データ項目112の順序に並んでいることに着目して、取得した中間データセット161、162、163、164、165、166の間の系列データ項目(時刻)196、198の順序を判定し、その順序で結合する。その後、系列データ項目(時刻)196、198の順序にデータが並んでいることを前提としたユーザ定義プログラム192、194によるデータの集約処理が実行される。
これにより、従来のようにデータ集約処理の前又は処理の一部に系列データ項目(時刻)の順序で1件毎にデータを並べ替える処理を加える必要がなくなる。そのため、大量の系列データを高速に且つ効率的に処理することができる。
<システム構成>
図2は、本発明の第1の実施の形態の計算機システム1の構成の一例を示す図である。
図2に示す計算機システム1は、ネットワーク211を介して互いに接続された複数のデータ管理サーバ201、並列分散処理制御サーバ202、クライアント装置203、複数のグループ抽出処理実行サーバ204、及び、複数のデータ集約処理実行サーバ205を備える。このような構成により計算機システム1は、上記の並列分散処理を実行する。なお、ネットワーク211は、LAN(Local Area Network)、WAN(Wide Area Network)、又は、インターネット等のグローバルネットワークである。また、ネットワーク211は、複数のネットワークに分けられてもよい。
以下、各装置のハードウェア構成及びソフトウェア構成について説明する。
データ管理サーバ201は、ネットワークインタフェース311、CPU312、主記憶装置313、二次記憶装置314、及び、これらを相互に接続するバス315を備える。
ネットワークインタフェース311は、データ管理サーバ201がネットワーク211に接続するためのインタフェースである。CPU312は、主記憶装置313に記憶されているプログラムを実行する演算処理装置である。主記憶装置313は、CPU312によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するRAM(Random Access Memory)等の記憶装置である。プログラムとは、例えば、不図示のOS(Operating System)である。二次記憶装置314は、上記の並列分散処理の入力データ222及び出力データ223を格納するハードディスク装置などの磁気記憶媒体である。なお、フラッシュメモリなどの半導体記憶媒体であってもよい。
入力データ222及び出力データ223について補足する。入力データ222及び出力データ223は、複数の物理的なデータから構成される論理的なデータであり、名前と構成する物理的なデータを識別するための情報とを含む。物理的なデータを識別するための情報とは、例えば物理的なデータを格納するデータ管理サーバ201のアドレス情報と物理的なデータの名前である。データの実体は物理的なデータとしてデータ管理サーバ201に格納される。入力データ222は、複数のデータ項目について各々値が設定された複数のデータが、系列データ項目の値に従って並べられたデータの集合(系列データ)である。出力データ223は、前述の並列分散処理によって出力されるデータである。入力データ222及び出力データ223の具体例は、それぞれ図9、図12を用いて後述する。
並列分散処理制御サーバ202は、ネットワークインタフェース321、CPU322、主記憶装置323、二次記憶装置324、及び、これらを相互に接続するバス325を備える。
ネットワークインタフェース321は、並列分散処理制御サーバ202がネットワーク211に接続するためのインタフェースである。CPU322は、主記憶装置323に記憶されているプログラムを実行することによって並列分散処理制御サーバ202の所定の機能を実現する演算処理装置である。主記憶装置323は、CPU322によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するRAM等の記憶装置である。プログラムとは、例えば、不図示のOS、及び、順序識別子設定部232と系列データ処理制御部237からなるデータ分割処理部231、実行制御部233の機能を実現するためのプログラムである。二次記憶装置324は、並列分散処理制御サーバ202が所定の機能を実現するために必要なプログラム、及び、データ分割管理テーブル235、データ割当管理テーブル236等のデータを格納するハードディスク装置等の磁気記憶媒体である。なお、二次記憶装置324は、フラッシュメモリなどの半導体記憶媒体であってもよい。
データ分割処理部231、順序識別子設定部232、実行制御部233、系列データ処理制御部237について補足する。各機能ブロック(データ分割処理部231、実行制御部233、系列データ処理制御部237、順序識別子設定部232)の機能は、CPU322が主記憶装置323に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はCPU322によって実行されるが、説明を簡略化して、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、並列分散処理制御サーバ202の各機能ブロックは、各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。
データ分割処理部231では、順序識別子設定部232が、実行する並列分散アプリケーションが上記の並列分散処理アプリケーションの場合に、系列データを含む入力データ222をデータのチャンクに分割する際に、系列データ項目の順序を示す情報をデータのチャンクに付与する機能を有する。データ分割処理部231、順序識別子設定部232、及び系列データ処理制御部237による処理の詳細については、図5にて後述する。
実行制御部233は、グル―プ抽出処理実行サーバ204及びデータ集約処理実行サーバ205に対して実行命令を送信する機能と、グル―プ抽出処理実行サーバ204及びデータ集約処理実行サーバ205から処理の完了通知を受信する機能を有する。
データ分割管理テーブル235は、分割された入力データ222を構成する物理的なデータを格納するデータ管理サーバ201の識別情報と、分割されたデータのチャンクに付与されたデータ集合識別子を定義したテーブルである。データ分割管理テーブル235の詳細については、図3Aにて後述する。
データ割当管理テーブル236は、分割されたデータのチャンクをどのグループ抽出処理実行サーバ204が入力データとするかを定義したテーブルである。データ割当管理テーブル236の詳細については、図3Bにて後述する。
クライアント装置203は、ネットワークインタフェース331、CPU332、主記憶装置333、二次記憶装置334、及び、これらを相互に接続するバス335を備える。
ネットワークインタフェース331は、クライアント装置203がネットワーク211に接続するためのインタフェースである。CPU332は、主記憶装置333に記憶されているプログラムを実行することによってクライアント装置203の所定の機能を実現する演算処理装置である。主記憶装置333は、CPU332によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するRAM等の記憶装置である。プログラムとは、例えば、不図示のOS、クライアント処理部241の機能を実現するためのプログラムである。二次記憶装置334は、クライアント装置203の所定の機能を実現するために必要なプログラム、及び、データ等を格納するハードディスク装置等の磁気記憶媒体である。なお、二次記憶装置334は、フラッシュメモリなどの半導体記憶媒体であってもよい。
クライアント処理部241は、並列分散処理制御サーバ202に対して並列分散処理の実行を要求する。
グループ抽出処理実行サーバ204は、ネットワークインタフェース341、CPU342、主記憶装置343、二次記憶装置344、及び、これらを相互に接続するバス345を備える。
ネットワークインタフェース341は、グループ抽出処理実行サーバ204がネットワーク211に接続するためのインタフェースである。CPU342は、主記憶装置343に記憶されているプログラムを実行することによってグループ抽出処理実行サーバ204の所定の機能を実現する演算処理装置である。主記憶装置343は、CPU342によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するRAM等の記憶装置である。プログラムとは、例えば、不図示のOS、グループ抽出処理部251、順序識別子付与部252、ユーザ定義抽出処理実行部255の機能を実現するためのプログラムである。二次記憶装置344は、グループ抽出処理実行サーバ204の所定の機能を実現するために必要なプログラム、及び、グループ抽出処理部251の処理によって出力される中間データセット254等のデータを格納するハードディスク装置などの磁気記憶媒体である。なお、二次記憶装置344は、フラッシュメモリなどの半導体記憶媒体であってもよい。
グループ抽出処理部251、順序識別子付与部252、ユーザ定義抽出処理実行部255について補足する。各機能ブロック(グループ抽出処理部251、順序識別子付与部252、ユーザ定義抽出処理実行部255)の機能は、CPU342が主記憶装置343に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はCPU342によって実行されるが、説明の簡略化のために、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、グループ抽出処理実行サーバ204の各機能ブロックは、各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。なお、グループ抽出処理部251、順序識別子付与部252、ユーザ定義抽出処理実行部255の処理の詳細については、図6にて後述する。
データ集約処理実行サーバ205は、ネットワークインタフェース351、CPU352、主記憶装置353、二次記憶装置354、及び、これらを相互に接続するバス355を備える。
ネットワークインタフェース351は、データ集約処理実行サーバ205がネットワーク211に接続するためのインタフェースである。CPU352は、主記憶装置353に記憶されているプログラムを実行することによってデータ集約処理実行サーバ205の所定の機能を実現する演算処理装置である。主記憶装置353は、CPU352によって実行されるプログラム、及び、プログラムの実行に必要なデータを記憶するRAM等の記憶装置である。プログラムとは、例えば、不図示のOS、データ集約処理部261、中間データセット結合処理部262、中間データセットソート処理部263、データソート処理部264、ユーザ定義集約処理実行部265の機能を実現するためのプログラムである。二次記憶装置354は、データ集約処理実行サーバ205の所定の機能を実現するために必要なプログラム、及び、データを格納するハードディスク装置などの磁気記憶媒体である。なお、二次記憶装置354は、フラッシュメモリなどの半導体記憶媒体であってもよい。
データ集約処理部261、中間データセット結合処理部262、中間データセットソート処理部263、データソート処理部264、ユーザ定義集約処理実行部265について補足する。各機能ブロック(データ集約処理部261、中間データセット結合処理部262、中間データセットソート処理部263、データソート処理部264、ユーザ定義集約処理実行部265)の機能は、CPU352が主記憶装置353に記憶された各機能ブロックを実現するためのプログラムを実行することで実現される。この場合、各機能ブロックの動作又は処理はCPU352によって実行されるが、説明の簡略化のために、以下、各機能ブロックが動作又は処理を実行するものとして説明する。なお、データ集約処理実行サーバ205の各機能を実現する論理回路などを含むハードウェアによって実現されてもよい。この場合には、各機能ブロックが動作又は処理を実行する。なお、データ集約処理部261、中間データセット結合処理部262、中間データセットソート処理部263、データソート処理部264、及び、ユーザ定義集約処理実行部265の処理の詳細については、図7にて後述する。
以上、各装置のハードウェア構成及びソフトウェア構成について説明してきたが、データ管理サーバ201、並列分散処理制御サーバ202、クライアント装置203、グループ抽出処理実行サーバ204、データ集約処理実行サーバ205の構成は、図3に示す構成に限定されない。例えば、データ管理サーバ201は、並列分散処理制御サーバ202と同じ計算機上に構成されてもよい。また、データ集約処理実行サーバ205のユーザ定義集約処理実行部265は、異なる計算機上で実行されてもよい。さらに、並列分散処理制御サーバ202のデータ分割処理部231や系列データ処理制御部237は、クライアント装置203等の異なる計算機上で実行されてもよい。
<各テーブルの内容>
続いて、本発明の第1の実施の形態の並列分散処理で用いられるテーブルの詳細について説明する。ここでは、並列分散処理制御サーバ202に格納されているデータ分割管理テーブル235及びデータ割当管理テーブル236について説明する。
(データ分割管理テーブル235)
図3Aは、本発明の第1の実施の形態のデータ分割管理テーブル235の一例を示す図である。データ分割管理テーブル235は、並列分散処理の実行時に主記憶装置323(図2参照)にロードされる、例えばファイルである。このデータ分割管理テーブル235には、論理データID413、データ集合識別子411、データ管理サーバノードID412が関連付けられたデータが格納される。
論理データID413は、並列分散処理アプリケーションの処理対象の系列データ、すなわち入力データ222を示す識別子である。例えば、論理データを一意に特定可能な文字列が設定される。データ集合識別子411は、並列分散処理制御サーバ202によって分割されたデータのチャンクの各々に付与される識別子である。このデータ集合識別子411は、例えばこのデータのチャンクを処理するグループ抽出処理実行サーバ204に基づいて設定される。例えば、分割した系列データのチャンクの順番を示す通番やグループ抽出処理実行サーバ204のMACアドレスが設定される。データ管理サーバノードID412は、分割されたデータのチャンクを構成する物理的なデータを管理するデータ管理サーバ201の識別子である。例えば、データ管理サーバ201のホスト名やアドレス情報が設定される。
図3Aに示す例では、論理データID413「data1」で示すデータが3個のデータのチャンクに分割されたこと、データ集合識別子「T1」で示すデータのチャンクは「Host10」で示すデータ管理サーバ201に格納される物理的なデータと「Host12」で示すデータ管理サーバ201に格納される物理的なデータとから構成されること等が示されている。
(データ割当管理テーブル236)
図3Bは、本発明の第1の実施の形態のデータ割当管理テーブル236の一例を示す図である。データ割当管理テーブル236は、並列分散処理の実行時に主記憶装置323(図2参照)にロードされる、例えばファイルである。このデータ割当管理テーブル236には、データ集合識別子421、グループ抽出処理ノードID422が関連付けられたデータが格納される。
データ集合識別子421は、並列分散処理制御サーバ202によって分割されたデータのチャンクの各々に付与される識別子である。このデータ集合識別子421は、例えばこのデータのチャンクを処理するグループ抽出処理実行サーバ204に基づいて設定される。例えば、分割した系列データのチャンクの順番を示す通番やグループ抽出処理実行サーバ204のMACアドレスが設定される。このデータ集合識別子421は図3Aのデータ集合識別子411に対応する。グループ抽出処理ノードID422は、分割されたデータのチャンクを処理するグループ抽出処理実行サーバ204を識別する情報である。例えば、グループ抽出処理実行サーバ204のホスト名やアドレス情報が設定される。
図3Bに示す例では、データ集合識別子「T1」「T2」「T3」が付与された各データのチャンクが、それぞれ「Host1」「Host2」「Host3」に示すグループ抽出処理実行サーバ204に割当てられることが示されている。
なお、これら図3A及び図3Bに示す各テーブルは、データ集合識別子411とデータ集合識別子421が対応しているため、一つのテーブルとして表現することも可能である。しかしながら、これらの情報を一つのテーブルで管理すると、グループ抽出処理ノードID422に対応するグループ抽出処理実行サーバ204に障害が発生した場合に並列分散処理が継続できない問題が生じる。そのため、二つのテーブルに分けて管理することが好適である。
<並列分散処理の全体の処理手順>
図4は、本発明の第1の実施の形態の並列分散処理の全体の処理手順を示すフローチャートである。ここでは、本実施形態に係る並列分散処理の全体の処理手順について説明する。
まずステップS511において、クライアント装置203は、並列分散処理制御サーバ202に対して並列分散処理の実行要求を送信する(S511)。ここでは、クライアント装置203のクライアント処理部241が、並列分散処理制御サーバ202に対して並列分散処理の実行要求を送信する。この実行要求は、並列分散処理制御サーバ202が制御可能な並列分散処理アプリケーションから今回実行する並列分散処理アプリケーションを識別するための実行アプリケーション識別子を含む。
続いてステップS512に進み、並列分散処理制御サーバ202は、並列分散処理対象のデータをデータのチャンクに分割する(S512)。ここでは、まずデータ分割処理部231が、クライアント装置203から並列分散処理の実行要求を受信する。次に、データ分割処理部231は、クライアント装置203から受信した実行要求に含まれる実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションを判定し、並列分散処理対象のデータである入力データ222を特定する。続いて、データ分割処理部231は、今回実行する並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行する特徴を有するものであるか否かを判定する。この特徴を有する並列分散処理アプリケーションであるときには、今回実行する並列分散処理アプリケーションの処理対象の入力データ222をデータ管理サーバ201から取得し、グループ抽出処理実行サーバ204の個数と同数のデータのチャンクに分割する。その後、各々のデータのチャンクに対してデータ集合識別子411を通番で付与する。ステップS512におけるデータ分割処理部231の処理の詳細は、図5にて後述する。
ステップS512を補足する。ステップS512において並列分散処理制御サーバ202がデータ管理サーバ201から取得する入力データ222には、入力データ222を構成する物理的なデータを識別するための情報が含まれる。また、実行アプリケーション識別子から今回実行する並列分散処理アプリケーション及び処理対象の入力データ222を判定する方法には、並列分散処理制御サーバ202が制御可能な並列分散アプリケーションの識別子と入力データを識別するための情報とを関連付けた情報を予め管理しておき、その管理情報を基に判定する方法がある。
続いてステップS513に進み、並列分散処理制御サーバ202は、グループ抽出処理実行サーバ204に対してグループ抽出処理の実行要求を送信する(S513)。ここでは、実行制御部233が、グループ抽出処理実行サーバ204に対してグループ抽出処理の実行要求を送信する。この実行要求は、グループ抽出処理実行サーバ204が自装置に割当てられたデータのチャンクを構成する物理的なデータを取得する際に必要となる情報を含む。データのチャンクを構成する物理的なデータを取得する際に必要となる情報とは、データ管理サーバ201の識別情報及びデータの名前である。実行制御部233が、データ分割管理テーブル235のデータ管理サーバノードID412及びステップS512で取得した入力データ222に基づいてこの情報を取得する。
続いてステップS514に進み、グループ抽出処理実行サーバ204は、グループ抽出処理を実行する(S514)。ここでは、まずグループ抽出処理部251が、並列分散処理制御サーバ202からグループ抽出処理の実行要求を受信する。次に、グループ抽出処理部251は、実行要求に含まれているデータのチャンクを構成する物理的なデータを取得する際に必要な情報に基づき、データ管理サーバ201から入力データ222を取得する。その後、グループ抽出処理部251は、予め開発者によって定義されたユーザ定義プログラム及びキー定義に定義されたキーの値によって、取得した入力データ222をキーの値毎のグループに分ける。その後、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット254を生成して、生成した中間データセット254を出力する。さらに、グループ抽出処理部251は、データのチャンクにデータ集合識別子が付与されているときには、そのデータ集合識別子を生成した中間データセット254に付与する。グループ抽出処理部251の処理の詳細は図6にて後述する。
続いてステップS515に進み、グループ抽出処理実行サーバ204は、並列分散処理制御サーバ202に対してグループ抽出処理が完了した旨を通知する(S515)。ここでは、グループ抽出処理実行サーバ204は、グループ抽出処理部251がグループ抽出に利用したキーの値を併せて通知する。
続いてステップS516に進み、並列分散処理制御サーバ202は、データ集約処理実行サーバ205に対してデータ集約処理の実行要求を送信する(S516)。ここでは、実行制御部233が、全てのグループ抽出処理実行サーバ204から処理が完了した旨の通知を受信したとき、データ集約処理実行サーバ205に対してデータ集約処理の実行要求を送信する。実行要求は、データ集約処理実行サーバ205が処理を担当するキーの値とグループ抽出処理実行サーバ204を識別する情報とを含む。グループ抽出処理実行サーバ204を識別する情報とは、実行制御部233がデータ割当管理テーブル236を参照して取得する情報であり、具体的には図3Bのグループ抽出処理ノードID422である。
続いてステップS517に進み、データ集約処理実行サーバ205は、データ集約処理を実行する(S517)。ここでは、まずデータ集約処理部261が、並列分散処理制御サーバ202からデータ集約処理の実行要求を受信する。次に、データ集約処理部261は、受信した実行要求に含まれている、自装置が担当するキーの値及びグループ抽出処理実行サーバ204を識別する情報を基に、全てのグループ抽出処理サーバ204からキーの値が同一の中間データセット254を取得する。続いて、中間データセット結合処理部262は、中間データセット254に付与されたデータ集合識別子から中間データセット254間の系列データ項目の順序性を判定し、その順序で中間データセット254を結合して、キーの値とグループとが関連付けられた値のリストを作成する。さらに、ユーザ定義集約処理実行部265が、系列データ項目の順序性に注目したユーザ定義の集約処理を実行し、その結果を出力データ223としてデータ管理サーバ201に格納する。データ集約処理部261の処理の詳細は、図7にて後述する。
ユーザ定義集約処理実行部265の処理を補足する。この処理では、出力データ223を構成する物理的なデータも併せて格納し、出力データ223に名前及び構成する物理的なデータを識別するための情報を設定する。
続いてステップS518に進み、データ集約処理実行サーバ205は、並列分散処理制御サーバ202にデータ集約処理が完了した旨を通知する(S518)。ここでは、データ集約処理実行サーバ205が、ステップS517で出力した出力データ223の名前及び出力データ223を格納するデータ管理サーバ201を識別する情報を通知する。データ管理サーバ201を識別する情報とは、例えばアドレス情報である。
続いてステップS519に進み、並列分散処理制御サーバ202は、並列分散処理の実行結果をクライアント装置203に通知する(S519)。この並列分散処理の実行結果は、データ集約処理実行サーバ205が出力した出力データ223の名前及び出力データ223を格納するデータ管理サーバ201を識別する情報を含む。
<データ分割処理部231の処理手順>
図5は、本発明の第1の実施の形態のデータ分割処理部231の処理手順を示すフローチャートである。図5に示す処理手順は、図4のステップS512の処理に対応する。
まずステップS611において、データ分割処理部231は、クライアント装置203から並列分散処理の実行要求を受信する(S611)。この実行要求は、並列分散処理制御サーバ202が制御可能な並列分散処理アプリケーションから今回実行する並列分散処理アプリケーションを識別するための実行アプリケーション識別子を含む。
続いてステップS612に進み、データ分割処理部231は、今回実行する並列分散処理アプリケーションの実行条件を判定する(S612)。ここでは、まず系列データ処理制御部237が、ステップS611で受信した実行要求に含まれる実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションを特定する。また、特定した並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行するものであるという実行条件を満たすか否かを判定する。判定した結果は、例えば「YES」又は「NO」で表される。
なお、今回実行する並列分散処理アプリケーションがこの条件を満たすか否かを判定する方法としては、例えば、今回実行する並列分散処理アプリケーションが実行するグループ抽出処理、データ集約処理の開発時の定義情報と入力データ222を解析して判定する方法や、実行条件の判定に必要となる情報を予めユーザに入力させ、その情報に基づき判定する方法がある。実行条件の判定に必要な情報を入力するための入力インタフェースについては、図13にて後述する。
続いてステップS613に進み、データ分割処理部231は、入力データ222をデータのチャンクに分割する(S613)。ここでは、まずデータ分割処理部231は、ステップS611で取得した実行アプリケーション識別子を基に今回実行する並列分散処理アプリケーションの入力データ222を特定する。その後、データ分割処理部231は、入力データ222を系列データ項目の先頭からグループ抽出処理実行サーバ204の個数と同数のデータのチャンクに分割する。
続いてステップS614に進み、データ分割処理部231は、分割したデータのチャンクを処理するグループ抽出処理実行サーバ204を決定する(S614)。ここでは、データ分割処理部231は、分割したデータのチャンクの各々に対してグループ抽出処理を担当するグループ抽出処理実行サーバ204を決定する。グループ抽出処理実行サーバ204を決定する方法としては、例えば、処理可能なグループ抽出処理実行サーバ204をキューで管理し、キーの先頭に位置するグループ抽出処理実行サーバ204から決定する方法や、ランダムに決定する方法がある。
続いてステップS615に進み、データ分割処理部231は、ステップS612において今回実行する並列分散処理アプリケーションが上記実行条件を満たす場合には(S615でYES)、ステップS616に進む。満たさない場合には(S615でNO)、処理を終了する。
ステップS616に進んだ場合、データ分割処理部231は、データのチャンクにデータ集合識別子を付与する(S616)。ここでは、順序識別子設定部232が、ステップS614で決定した情報を基に、ステップS613で分割したデータのチャンクの各々に対して、各々のデータのチャンクを識別するためのデータ集合識別子として、入力データ222を先頭から複数のデータのチャンクに分割した順番を示す通し番号(通番)を付与する。例えば時刻を系列データ項目とした時系列データを複数のデータのチャンクに分割したときには、時刻が早いデータを含むデータのチャンクの順に通番を付与する。
続いてステップS617に進み、データ分割処理部231は、データ集合識別子とデータ集合識別子を付与したデータのチャンクを構成するデータを識別するための情報を、データ分割管理テーブル235に設定する(S617)。ここでは、順序識別子設定部232が、ステップS616でデータのチャンクに付与したデータ集合識別子と、データ集合識別子を付与したデータのチャンクを構成するデータを識別するための情報とを、データ分割管理テーブル235に設定する。
続いてステップS618に進み、データ分割処理部231は、データ集合識別子及びグループ抽出処理ノードIDを、データ割当管理テーブル236に設定する(S618)。ここでは、順序識別子設定部232が、ステップS616でデータのチャンクに付与したデータ集合識別子と、ステップS614でこのデータのチャンクを処理することが決定されたグループ抽出処理実行サーバ204のノードIDとを、データ割当管理テーブル236に設定する。
<グループ抽出処理部251の処理手順>
図6は、本発明の第1の実施の形態のグループ抽出処理部251の処理手順を示すフローチャートである。図6に示す処理手順は、図4のステップS514の処理に対応する。
まずステップS711において、グループ抽出処理部251は、並列分散処理制御サーバ202からグループ抽出処理の実行要求を受信する(S711)。ここでは、グループ抽出処理部251は、実行要求を受信した後に、この実行要求から自装置に割当てられたデータのチャンクを構成する物理的なデータを識別する情報を取得する。データのチャンクを構成する物理的なデータを識別する情報とは、データ管理サーバ201の識別情報及びデータの名前である。この情報は、実行制御部233が、データ分割管理テーブル235のデータ管理サーバノードID412及び図4のステップS512で取得した入力データ222に基づいて取得する情報である。
続いてステップS712に進み、グループ抽出処理部251は、データのチャンクを取得する(S712)。ここでは、グループ抽出処理部251は、ステップS711で取得したデータのチャンクを構成する物理的なデータを識別する情報を基に、データ管理サーバ201からデータのチャンクを取得する。
続いてステップS713に進み、グループ抽出処理部251は、ステップS712で取得したデータのチャンクに対してグループ抽出処理を実行し、その結果を中間データセット254として出力する(S713)。ここでは、ユーザ定義抽出処理実行部255が、予め開発者によって定義されたユーザ定義プログラム及びキー定義に定義されたキーの値によって、ステップS712で取得したデータのチャンクをキーの値毎にグルーピングする。その後、キーの値毎にキーの値とグループ分けされたデータとを関連付けた中間データセット254として出力する。
例えば、グループ抽出処理の対象のデータのチャンクには料金所IDのデータ項目が100種類あり、キー定義にはキーの値が料金所IDと定義されているとする。このとき、1台のグループ抽出処理実行サーバ204は、料金所IDのデータ項目の種類だけ、すなわち100個の中間データセット254を出力する。
ステップS713を補足する。ステップS713ではさらに、ユーザ定義抽出処理実行部255が、キーの値を中間データセット254に付与する。中間データセット254にキーの値を付与する方法には、例えば中間データセット254のデータの先頭に追加する方法、中間データセット254の名前に付加する方法がある。
続いてステップS714に進み、グループ抽出処理部251は、データ集合識別子があるか否かを判定する(S714)。ここでは、グループ抽出処理部251は、ステップS712で取得したデータのチャンクにデータ集合識別子が付与されているか否かを判定する。付与されている場合には(S714でYES)、ステップS715に進む。付与されていない場合には(S714でNO)、処理を終了する。
ステップS715に進んだ場合、グループ抽出処理部251は、データ集合識別子を取得し、中間データセット254に対してデータ集合識別子を付与する(S715)。ここでは、順序識別子付与部252が、ステップS712で取得したデータのチャンクに付与されたデータ集合識別子を取得し、取得したデータ集合識別子をステップS713で生成された中間データセット254に付与する。中間データセット254に対してデータ集合識別子を付与する方法には、例えば中間データセット254のデータの先頭に追加する方法、中間データセット254の名前に追加する方法がある。
<データ集約処理部261の処理手順>
図7は、本発明の第1の実施の形態のデータ集約処理部261の処理手順を示すフローチャートである。図7に示す処理手順は、図4のステップS517の処理に対応する。
まずステップS811において、データ集約処理部261は、並列分散処理制御サーバ202からデータ集約処理の実行要求を受信する(S811)。実行要求は、データ集約処理実行サーバ205が処理を担当するキーの値と中間データセット254を含むグループ抽出処理実行サーバ204を識別する情報とを含む。グループ抽出処理実行サーバ204を識別する情報とは、実行制御部233がデータ割当管理テーブル236を参照して取得する情報であり、具体的には図3Bのグループ抽出処理ノードID422である。
続いてステップS812に進み、データ集約処理部261は、キーの値が同一の中間データセット254を取得する(S812)。ここでは、データ集約処理部261は、ステップS811で受信した実行要求に含まれていた情報を基に、グループ抽出処理実行サーバ204の各々にアクセスし、キーの値が同一の中間データセット254を全てバルク転送にて取得する。キーが同一の中間データセット254を判定する方法には、例えば、ステップS713で出力された中間データセット254に含まれるデータから判定する方法、中間データセットの名前から判定する方法がある。
続いてステップS813に進み、データ集約処理部261は、ステップS812で取得した中間データセット254にデータ集合識別子が付与されているか否かを判定する(S813)。付与されている場合には(ステップ813でYES)、ステップS814に進む。一方、付与されていない場合には(ステップ813でNO)、ステップS816に進む。
ステップS814に進んだ場合、データ集約処理部261は、ステップS812で取得した中間データセット254からデータ集合識別子を取得する(S814)。ここでは、中間データセット結合処理部262が、ステップS812で取得した中間データセット254に付与された通番等のデータ集合識別子を取得する。
続いてステップS815に進み、データ集約処理部261は、データ集合識別子を整列させ、その順序で中間データセット254を結合する(S815)。ここでは、中間データセットソート処理部263が、ステップS814で取得したデータ集合識別子を番号順に整列させ、その順序で中間データセット254を結合する。データ集合識別子を番号順に整列する方法には、クイックソート等の一般的なソート方法がある。
他方、ステップS816に進んだ場合、データ集約処理部261は、ステップS812で取得した中間データセット254を結合する(S816)。ここでは、中間データセット結合処理部262が、中間データセット254を取得した順序で結合し、キーの値とグループとが関連付けられた値のリストを生成する。
続いてステップS817に進み、データ集約処理部261は、系列データ項目の順序でデータを整列する(S817)。ここでは、データソート処理部264が、ステップS816で生成されたリストを系列データ項目の順序で1件毎に並び替える。
ステップS818に進むと、データ集約処理部261は、系列データ項目の順序性に着目した処理を実行し、出力データ223を出力する(S818)。ここでは、ユーザ定義集約処理実行部265が、ステップS815又はステップS817で生成されたデータに対して、開発者が定義した系列データ項目の順序性を活用した処理方法に従った処理を実行し、その結果を出力データ223としてデータ管理サーバ201に格納する。
<並列分散処理の具体例>
以下、本発明の第1の実施の形態の並列分散処理の具体例を説明する。本具体例では、前述の車両の通行データ分析システムに本実施形態に係る並列分散処理方法を適用した場合の、各料金所を退場した車両に関する単位時間あたりの顧客属性を分析する分析アプリケーションの具体的な動作及び使用されるデータについて説明する。
具体例に係る通行データ分析システムは、グループ抽出処理実行サーバ204を3台、データ集約処理実行サーバ205を2台備える。また、通行データの料金所識別子には、2つの料金所「X」及び「Y」のいずれかの情報が設定される。
この分析アプリケーションでは、最初に、入力データ222として入力された通行データを料金所毎にグルーピングし、料金所毎の退場の通行データのリストを出力データとして出力する。次に、料金所毎の退場の通行データのリストを入力データとして入力し、各料金所を退場した車両に関する単位時間あたりの顧客属性を抽出する処理を実行し、その結果を出力データ223として出力する。
(具体例の通行データ分析システムの処理手順)
図8は、本発明の第1の実施の形態の通行データ分析システムの処理手順を示すフローチャートである。
まずステップS911において、並列分散処理制御サーバ202は、今回実行する並列分散処理アプリケーションの実行条件を判定する(S911)。ここでは、並列分散処理制御サーバ202のデータ分割処理部231が、クライアント装置203から並列分散処理の実行要求を受信し、受信した実行要求から今回実行する並列分散処理アプリケーションを特定する。その後、特定した並列分散処理アプリケーションの実行条件を判定する。このステップS911の処理は図5のステップS611及びS612の処理に対応する。
すなわち、データ分割処理部231は、特定した並列分散処理アプリケーションが、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を実行し、その後、系列データ項目の順序にデータが並んでいることを前提としたデータ集約処理を実行するものであるという実行条件を満たすか否かを判定する。
本具体例に係る分析アプリケーションは、大量の通行データに対して、系列データ項目(時刻)と異なるデータ項目(料金所ID)の値毎にグルーピングするグループ抽出処理を実行し、その後、系列データ項目(時刻)の順序性に着目したデータ集約処理を実行するものであるため、この実行条件を満たす。
続いてステップS912に進み、並列分散処理制御サーバ202は、入力データ1001をデータのチャンク1021、1022、1023に分割する(S912)。ここでは、並列分散処理制御サーバ202のデータ分割処理部231が、入力データ1001をグループ抽出処理実行サーバ204の台数と同数の3個のデータのチャンク1021、1022、1023に分割する。このステップS912の処理は図5のステップS613からS618の処理に対応する。このステップS912の処理に係るデータの一例について、図9を用いて説明する。
図9は、本発明の第1の実施の形態の通行データ分析システムの入力データ1001とデータのチャンク1021、1022、1023の一例を示す図である。
図9に示すように、入力データ1001を構成する物理データは、時刻情報1011、カードID1012、処理ID1013、料金所ID1014を含む。時刻情報1011は、車両が料金所を通過した時刻に係る情報である。カードID1012は、車両に搭載されたICカードの識別子である。処理ID1013は、入場又は退場のいずれかを示す通行識別子である。料金所ID1014は、どの料金所かを示す識別子である。
ステップS912において、データ分割処理部231は、図9に示す入力データ1001を構成する物理データを、グループ抽出処理実行サーバ204の台数と同数の3個のデータのチャンク1021、1022、1023に分割する。データのチャンク1021、1022、1023の各々は大量の通行データを含む。これらのデータのチャンク1021、1022、1023が3台の第1から第3のグループ抽出処理実行サーバ204の入力データとなる。
ステップS912を補足する。本具体例によれば、データ分割処理部231は、上記のように入力データ1001をデータのチャンク1021、1022、1023に分割した後に、分割したデータのチャンクを実行する第1から第3のグループ抽出処理実行サーバ204を決定する(図5のS614)。続いて、上記の並列分散処理アプリケーションの実行条件を満たしているので(図5のS615でYES)、データのチャンク1021、1022、1023に通番のデータ集合識別子「T1」「T2」「T3」を付与する(図5のS616)。続いて、データ集合識別子及びデータのチャンクを構成するデータを識別するための情報をデータ分割管理テーブル235に設定する(図5のS617)。さらに、データ集合識別子及びグループ抽出処理実行ノードIDを、データ割当管理テーブル236に設定する(図5のS618)。
続いてステップS913に進み、グループ抽出処理実行サーバ204は、ステップS912で分割されたデータのチャンク1021、1022、1023に対してグループ抽出処理を実行し、その結果を中間データセット254として出力する(S913)。このステップS913の処理は図6のステップS711からS715の処理に対応する。
すなわち、各々のグループ抽出処理実行サーバ204のグループ抽出処理部251は、ステップS912で分割されたデータのチャンク1021、1022、1023のうち、自装置に割当てられたデータのチャンクを取得し、取得したデータのチャンクをキーの値(料金所)毎にグルーピングする。その後、キーの値(料金所)毎に中間データセット254を生成して出力する。
ステップS913を補足する。本具体例によれば、グループ抽出処理部251は、上記のように中間データセット254を生成した後に、自装置に割当てられたデータのチャンクにデータ集合識別子が付与されているか否かを判定する(図6のS713)。本具体例では、データのチャンクにデータ集合識別子が付与されている(図6のS714でYES)。そのため、グループ抽出処理部251は、生成した中間データセット254に対してデータ集合識別子を付与する(図6のS715)。このステップS913の処理に係るデータの一例について、図10を用いて説明する。
図10A、図10B及び図10Cは、本発明の第1の実施の形態の通行データ分析システムの中間データセットの一例を示す図である。
図10Aに示すように、第1のグループ抽出処理実行サーバ204から出力される中間データセット1101は、料金所「Y」の中間データセット1111、料金所「X」の中間データセット1112を含む。中間データセット1111、1112は、料金所ID1014、時刻情報1011、カードID1012、処理ID1013、及び、データ集合識別子「T1」を含む。
図10Bに示すように、第2のグループ抽出処理実行サーバ204から出力される中間データセット1102は、料金所「Y」の中間データセット1113、料金所「X」の中間データセット1114を含む。中間データセット1113、1114は、料金所ID1014、時刻情報1011、カードID1012、処理ID1013、及び、データ集合識別子「T2」を含む。
図10Cに示すように、第3のグループ抽出処理実行サーバ204から出力される中間データセット1103は、料金所「Y」の中間データセット1115、料金所「X」の中間データセット1116を含む。中間データセット1115、1116は、料金所ID1014、時刻情報1011、カードID1012、処理ID1013、及び、データ集合識別子「T3」を含む。
以上のように、ステップS913では、3台の第1から第3のグループ抽出処理実行サーバ204のグループ抽出処理部251が並列に動作する。これにより、1台のグループ抽出処理実行サーバ204は料金所「X」、「Y」に関する2個の中間データセットを出力し、3台のグループ抽出処理実行サーバ204は合計6個の中間データセットを出力する。
続いてステップS914に進み、データ集約処理実行サーバ205は、中間データセットを結合して処理を実行し、その結果を出力データとして出力する(S914)。このステップS914の処理は図7のステップS811からS815及びS818の処理に対応する。
すなわち、各々のデータ集約処理実行サーバ205のデータ集約処理部261は、並列分散処理制御サーバ202からデータ集約処理の実行要求を受信する(図7のS811)。次に、キーの値が同一の中間データセットを取得する(図7のS812)。ここで、取得した中間データセットにはデータ集合識別子が付与されている(図7のS813でYES)。そのため、中間データセットからデータ集合識別子を取得する(図7のS814)。続いて、取得したデータ集合識別子を整列させ、その順序で中間データセットを結合する(図7のS815)。その後、ユーザ定義集約処理実行部265は、結合したデータに基づいて単位時間あたりの顧客属性を分析し、分析結果を出力データとして出力する(図7のS818)。
以上のように、ステップS914では、2台のデータ集約処理実行サーバ205のデータ集約処理部261が並列に動作する。これにより、料金所「Y」の中間データセットを結合したデータ1211と、料金所「X」の中間データセットを結合したデータ1212とが生成される。また、ユーザ定義集約処理実行部265は、データ1211、1212に対して処理を実行し、その結果を出力データ1221、1222として出力する。このステップS914の処理に係るデータの一例について、図11Aから図12Bを用いて説明する。
図11A及び図11Bは、本発明の第1の実施の形態の通行データ分析システムの中間データセットを結合したデータ1211、1212の一例を示す図である。
図11Aに示すデータ1211は、料金所ID「Y」の中間データセットを結合したデータである。このデータ1211は、料金所ID1014、時刻情報1011、カードID1012、処理ID1013のデータを含む。一方、図11Bに示すデータ1212は、料金所ID「X」の中間データセットを結合したデータである。このデータ1212は、料金所ID1014、時刻情報1011、カードID1012、処理ID1013のデータを含む。
図12A及び図12Bは、本発明の第1の実施の形態の通行データ分析システムの出力データ1221、1222の一例を示す図である。
図12Aに示す出力データ1221は、図11Aのデータ1211に基づいて料金所「Y」について分析したデータである。この出力データ1221は、料金所ID1014、時刻間隔1231、男性割合1232、平均年齢1233のデータを含む。一方、図12Bに示す出力データ1222は、図11Bの出力データ1212に基づいて料金所「X」について分析したデータである。この出力データ1222は、料金所ID1014、時刻間隔1231、男性割合1232、平均年齢1233のデータを含む。
<効果>
以上に示すように、本発明の第1の実施の形態によれば、大量の系列データに対して、系列データ項目の順序に並んでいることを前提としないグループ抽出処理を並列に実行し、その後、系列データ項目の順にデータが並んでいることを前提としたデータ集約処理を実行する並列分散処理アプリケーションの全体の処理を効率的に行うことができる。
具体的には、このような特徴を備えた並列分散アプリケーションであることを判定したとき、系列データを複数のデータのチャンクに分割する際に、分割したデータのチャンクに通番を示すデータ集合識別子を付与し、グループ抽出処理部251でデータ集合識別子を中間データセットに付与し、データ集約処理部261でデータ集合識別子の順序で中間データセットを結合して、系列データ項目の順序性に基づいた処理を実行している。そのため、従来よりも効率的に並列分散処理アプリケーションを実行できる。
例えば、上記で説明した通行データ分析システムのように、系列データ項目(時刻)とグループ抽出処理に用いられるキー(料金所ID)が異なり、更にデータ集約処理で系列データ項目(時刻)の順序性に着目した処理を行うとき、各料金所を退場した単位時間あたりの顧客属性を従来よりも高速に分析できる。これにより、業務の意思決定の支援を従来よりも素早く行うことも可能になる。
<入力インタフェース>
図13は、本発明の第1の実施の形態の並列分散処理アプリケーションの実行条件の判定に必要な情報を入力するための入力インタフェースの一例を示す図である。ここでは、図5のステップS612において説明した、実行条件の判定に必要な情報を入力するための入力インタフェースについて説明する。
図13に示す並列分散処理アプリケーション設定画面1711は、入力データの系列データ項目を定義する入力フィールド1721と、データ抽出処理に際してのキーとなるデータ項目を定義する入力フィールド1722と、データ集約処理に際してのデータ項目を定義する入力フィールド1723と、を含む。
ユーザは、この並列分散処理アプリケーション設定画面1711を通して、入力フィールド1721、1722、1723に情報を入力する。そうすると、この入力インタフェース上で定義された情報は、系列データ処理制御定義情報として生成され、並列分散処理制御サーバ202の図5のステップ612で利用される。
この入力インタフェースは、図2で示した何れかの装置上で動作する。また、入力インタフェースを通して入力された系列データ処理制御定義情報は、系列データ処理制御部237が参照可能な位置に配置される。
なお、図13はGUI(Graphical User Interface)による入力インタフェースを示しているが、入力インタフェースはGUIに限定されるものではない。例えば、ユーザが系列データ処理制御定義情報を直接設定する方法でもよい。
<グループ抽出処理部251の処理手順の別の例>
なお、以上に示した第1の実施の形態(図5のステップS613参照)では、データ分割処理部231は、入力データ222をグループ抽出処理実行サーバ204の個数と同数のデータのチャンクに先頭から分割し、分割したデータのチャンクをグループ抽出処理実行サーバ204に割当てていた。そのため、入力データ222を格納するデータ管理サーバ201によっては、ネットワーク上でより近くに位置するグループ抽出処理実行サーバ204があるにも関わらず、ネットワーク上で遠いグループ抽出処理実行サーバ204にデータのチャンクが割当てられる場合があった。大量データを転送する場合、ネットワーク上でより近いグループ抽出処理実行サーバ204に処理を割当てる方が高速に処理できる。
そこで、図5のステップS613において、データ分割処理部231が、入力データ222をデータのチャンクに分割するとき、以下の方法で分割することが好適である。すなわち、ネットワーク上で入力データ222を格納するデータ管理サーバ201に一番近いグループ抽出処理実行サーバ204が当該入力データ222を処理できるように入力データ222を分割し、分割された複数のデータのチャンクをグループ抽出処理実行サーバ204に割当てる方法である。なお、分割した複数のデータのチャンクが割当てられたグループ抽出処理実行サーバ204は、複数のデータのチャンクを処理する。
なお、ネットワーク上でデータ管理サーバ201に一番近いグループ抽出処理実行サーバ204を特定する方法としては、例えば、データ管理サーバ201からグループ抽出処理実行サーバ204までのホップ数で判定する方法がある。
図14は、本発明の第1の実施の形態のグループ抽出処理部251が複数のデータのチャンクを入力データとして処理するときの処理手順を示すフローチャートである。
図14に示すフローチャートは、図6に示した各処理に、ステップS1311からステップS1316の処理が新たに追加されている。また、図6に示した処理のうちのステップS715が削除されている。なお、図14のステップS711からステップS714の処理は、図6のステップS711からステップS714の処理と同様であるため説明を省略する。ここでは、図14のステップS1311からステップS1316の処理について説明する。
ステップS1311に進んだ場合、グループ抽出処理部251は、ステップS712で取得した全てのデータのチャンクに付与されたデータ集合識別子を取得する(S1311)。ここでは、順序識別子付与部252が、ステップS712で取得した全てのデータのチャンクに付与されたデータ集合識別子を取得する。
続いてステップS1312に進んで、グループ抽出処理部251は、取得した全てのデータ集合識別子の値に連続性があるか否かを判定する(S1312)。ここでは、順序識別子付与部252が、ステップS1311で取得した全てのデータ集合識別子を参照して、取得した全てのデータ集合識別子(例えば通番)の少なくとも一部に値の連続性があるか否かを判定する。少なくとも一部に値の連続性があり、且つ、データ集合識別子の個数が2個以上の場合には(S1312でYES)、ステップS1313に進む。一方、取得した全てのデータ集合識別子に値の連続性がない場合には(S1312でNO)、ステップS1315に進む。
ここで、データ集合識別子の少なくとも一部に値の連続性がある場合とは、例えば、3個のデータのチャンクに付与されたデータ集合識別子が「T1」、「T2」、「T4」のように、一部のデータ集合識別子「T1」、「T2」の値が連続している場合である。一方、データ集合識別子に値の連続性がない場合とは、例えば、データ集合識別子が「T1」、「T3」、「T5」である場合である。
ステップS1313に進んだ場合、グループ抽出処理部251は、連続性があるデータ集合識別子が付与されたデータのチャンクを結合し、中間データセット254として出力する(S1313)。ここでは、順序識別子付与部252が、連続性があるデータ集合識別子を集め、その後、連続性があるデータ集合識別子が付与されたデータのチャンクをデータ集合識別子の順番に従い結合し、開発者が定義した処理を実行し、キーの値毎に中間データセット254として出力する。なお、連続性がないデータ集合識別子が付与されたデータのチャンクについては、キーの値毎に中間データセットとして出力する。例えば、データ集合識別子が「T1」、「T2」、「T4」である場合、データ集合識別子「T1」、「T2」が付与されたデータのチャンクが結合され、キーの値毎に中間データセットとして出力される。また、データ集合識別子「T4」が付与されたデータのチャンクは、キーの値毎に中間データセットして出力される。
続いてステップS1314に進んで、グループ抽出処理部251は、出力した中間データセット254にデータ集合識別子を付与する(S1314)。ここでは、順序識別子付与部252が、ステップS1313で出力した中間データセットに対して、ステップS1311で取得したデータ集合識別子を付与する。その際、データ集合識別子の値に連続性があるデータのチャンクを結合して生成した中間データセットに対しては、データ集合識別子を連結した情報を新たなデータ集合識別子として付与する。一方、データ集合識別子の値に連続性がないデータのチャンクに基づいて生成した中間データセットに対しては、ステップS1313でそのデータのチャンクから取得したデータ集合識別子をそのまま付与する。例えば、データ集合識別子が「T1」、「T2」である場合、データ集合識別子「T1」、「T2」が付与されたデータのチャンクを結合して生成した中間データセットには、データ集合識別子「T1T2」が付与される。
一方、ステップS1315に進んだ場合、グループ抽出処理部251は、中間データセット254を出力する(S1315)。ここでは、順序識別子付与部252が、ステップS712で取得した全てのデータのチャンクに対して、開発者の定義した処理を実行し、キーの値毎に中間データセットを出力する。例えば、ステップS712で取得したデータのチャンクが2個あり、2個のデータのチャンクにはキーの値が3個含まれていたとき、中間データセットは6個出力される。
続いてステップS1316に進んで、グループ抽出処理部251は、出力した中間データセット254にデータ集合識別子を付与する(S1316)。ここでは、順序識別子付与部252が、ステップS1315で出力した全ての中間データセットに対して、ステップS1311で取得したデータ集合識別子を付与する。
なお、図14に示す処理が終了すると、データ集約処理実行サーバ205の中間データセットソート処理部263が、全ての中間データセットに付与されたデータ集合識別子(結合されたデータ集合識別子を含む)を整列して、その順序に従い中間データセットを結合する。その後、ユーザ定義集約処理実行部265が、結合したデータに対して系列データ項目の順序性に基づいた処理を実行する。例えば、データ集合識別子が「T1T2」、「T4」、「T3」である場合、番号順(「T1T2」、「T3」、「T4」の順序)にデータ集合識別子を整列し、その順序で対応する中間データセットを結合する。
<データ集約処理部261の処理手順の別の例>
また、以上に示した第1の実施の形態(図4のステップS516参照)では、実行制御部233は、全てのグループ抽出処理実行サーバ204からグループ抽出処理が完了した旨の通知を受信した後に、データ集約処理実行サーバ205に対してデータ集約処理の実行要求を送信していた。しかし、実行制御部233が、全てのグループ抽出処理実行サーバ204の処理が完了するのを待つことなく、データ集約処理実行サーバ205に実行要求することによって、部分的にでも中間データセット結合処理を実行でき、並列分散処アプリケーションを効率的に処理できる。
そこで、図5のステップ516において、実行制御部233が、全てのグループ抽出処理実行サーバ204からグループ抽出処理が完了した旨の通知を受信するのを待つことなく、例えば、ある一定の台数のグループ抽出処理実行サーバ204から通知を受信したときに、データ集約処理実行サーバ205にデータ集約処理の実行要求を送信する。その後、データ集約処理実行サーバ205は、ある時刻までに終了したグループ抽出処理実行サーバ204で出力された中間データセット254に対してデータ集約処理を実行する。
図15は、本発明の第1の実施の形態のデータ集約処理部261が全てのグループ抽出処理実行サーバ204の完了を待たずに処理するときの処理手順を示すフローチャートである。
図15に示すフローチャートは、図7に示した各処理に、ステップS1411からステップS1415の処理が新たに追加されている。なお、図15に示した処理のうちのステップS811からステップS817の処理は、図7のステップS811からステップS817の処理と同様であるため説明を省略する。ここでは、図15のステップS1411からステップS1415の処理について説明する。
ステップS814からステップS1411に進んで、データ集約処理部261は、取得した全てのデータ集合識別子の値に連続性があるか否かを判定する(S1411)。ここでは、中間データセット結合処理部262が、ステップS814で取得した全てのデータ集合識別子を参照して、取得した全てのデータ集合識別子(例えば通番)の少なくとも一部に値の連続性があるか否かを判定する。少なくとも一部に値の連続性があり、且つ、データ集合識別子の個数が2個以上の場合には(S1411でYES)、ステップS1412に進む。一方、取得した全てのデータ集合識別子に値の連続性がない場合には(S1411でNO)、ステップS1415に進む。
ここで、データ集合識別子の少なくとも一部に値の連続性がある場合とは、例えば、データ集合識別子が「T1」、「T2」、「T4」のように、一部のデータ集合識別子「T1」、「T2」の値が連続している場合である。一方、データ集合識別子に値の連続性がない場合とは、例えば、データ集合識別子が「T1」、「T3」、「T5」である場合である。
ステップS1412に進んだ場合、データ集約処理部261は、全てのグループ抽出処理実行サーバ204から中間データを取得したか否かを判定する(S1412)。全てのグループ抽出処理実行サーバ204から中間データを取得した場合には(S1412でYES)、ステップS815に進む。一方、全てのグループ抽出処理実行サーバ204から中間データを取得していない場合には(S1412でNO)、ステップS1413に進む。
ステップS1413に進んだ場合、データ集約処理部261は、ステップS814で取得したデータ集合識別子のうちの連続性があるデータ集合識別子に対応する中間データセット254を結合する(S1413)。ここでは、中間データセット結合処理部262が当該処理を行う。なお、連続性がないデータ集合識別子に対応する中間データセット254に対する処理は行わない。例えば、データ集合識別子が「T1」、「T2」、「T4」である場合、データ集合識別子「T1」、「T2」が付与された中間データセットは結合される。また、データ集合識別子「T4」が付与された中間データセットに対する処理は行われない。
ステップS813でNOからステップS1414に進んだ場合あ、データ集約処理部261は、全てのグループ抽出処理実行サーバ204から中間データセット254を取得したか否かを判定する(S1414)。全てのグループ抽出処理実行サーバ204から中間データセット254を取得した場合には(S1414でYES)、ステップS816に進む。一方、全てのグループ抽出処理実行サーバ204から中間データセット254を取得していない場合には(S1414でNO)、ステップS1415に進む。
ステップS1415に進んだ場合、データ集約処理部261は、並列分散処理制御サーバ202からデータ集約処理の実行要求を受信するまで待機する(S1415)。
<データ集合識別子の別の例>
また、以上に示した第1の実施の形態(図5のS616参照)では、通番を示す情報をデータ集合識別子として付与したが、この場合に限らない。例えば、分割したデータのチャンクに含まれる系列データ項目の代表値(平均値や中間値)をデータ集合識別子として付与してもよい。
(第2の実施の形態)
続いて、本発明の第2の実施の形態について、図16及び図17を参照して説明する。
前述の第1の実施の形態では、系列データを分割する際に、分割したデータのチャンクに対して通番を示す情報をデータ集合識別子として付与し、その通番をもとに系列データ項目の順序性を判定して中間データセットを結合していた。しかし、データ集合識別子を付与する方法とは別の方法として、グループ抽出処理で生成される中間データセットの先頭データに含まれる系列データ項目の値を参照し、その値を比較することで、系列データ項目の順序性を判定して中間データセットを結合する方法が考えられる。
そこで、本発明の第2の実施の形態では、系列データを分割する際に分割したデータのチャンクに対してデータ集合識別子を付与することなく、データの集約処理を実行する際に、中間データセットに含まれる先頭データから系列データ項目の順序性を判定し、その順序で中間データセットを結合して並列分散処理アプリケーションを実行する。
なお、第2の実施の形態では、第1の実施の形態と共通する構成については、適宜説明を省略し、相違する構成及び作用を中心に説明する。また、第2の実施の形態に関わる計算機システムの構成は、図2及び図3に示した第1の実施の形態のシステム構成から順序識別子設定部232を削除したシステム構成である。
<データ分割処理部231の処理手順、及び、実行制御部233がグループ抽出処理実行サーバ204に対してグループ抽出処理の実行要求を送信する際の処理手順>
第2の実施の形態におけるデータ分割処理部231の処理手順、及び、実行制御部233がグループ抽出処理実行サーバ204に対してグループ抽出処理の実行要求を送信する処理手順について説明する。
第2の実施の形態のデータ分割処理部231は、図5に示す一連の処理のうちのステップS611からS615を実行するが、ステップS616を実行しない。なお、ステップS617では、データ集合識別子の代わりにデータのチャンクを処理するグループ抽出処理実行サーバ204を識別可能な情報をデータ分割管理テーブル235に設定する。ステップS618でも同様に、データ集合識別子の代わりにグループ抽出処理実行サーバ204を識別可能な情報をデータ割当管理テーブル236に設定する。なお、グループ抽出処理実行サーバ204を識別可能な情報とは、例えば、MACアドレスである。
また、ステップS615において実行条件を満たすと判定すると(S615でYES)、図4に示すステップS513に進んで並列分散処理制御サーバ202がグループ抽出処理実行サーバ204に対してグループ抽出処理の実行要求を送信する際に、この実行要求に系列データ処理識別子を追加する。系列データ処理識別子とは、今回実行する並列分散処理アプリケーションが、実行条件を満たす並列分散処理アプリケーションであることを示す識別子であり、例えば「EXEC SEQUENCE PROCESSING」のような値である。
<グループ抽出処理部251の処理手順>
図16は、本発明の第2の実施の形態のグループ抽出処理部251の処理手順を示すフローチャートである。図16に示す処理手順は、図4のステップS514の処理に対応する。
図16に示すフローチャートには、図6に示した各処理からステップS714及びS715の処理が削除され、ステップS1511及びステップS1512の処理が新たに追加されている。なお、図16に示した処理のうちのステップS711からステップS713の処理は、図6のステップS711からステップS713の処理と同様であるため説明を省略する。ここでは、図16のステップS1511及びステップS1512の処理について説明する。
ステップS713からステップS1511に進んで、グループ抽出処理部251は、ステップS711で受信した実行要求の中に、系列データ処理識別子が含まれているか否かを判定する(S1511)。系列データ処理識別子が含まれていた場合には(S1511でYES)、ステップS1512に進む。一方、系列データ識別子が含まれていない場合には(S1511でNO)、処理を終了する。
ステップS1512に進んだ場合、グループ抽出処理部251は、中間データセット254を識別可能な情報を中間データセット254に付与する(S1512)。ここでは、順序識別子付与部232が、ステップS713で生成した中間データセット254の名前に、グループ抽出処理実行サーバ204に基づくデータ集合を識別するデータ集合識別子を追加する。ここでいうデータ集合識別子とは、例えば、グループ抽出処理実行サーバ204のMACアドレス等、グループ抽出処理実行サーバ204を一意に特定できる情報である。このデータ集合識別子は、中間データセット254をバルク転送により取得したデータ集約処理実行サーバ205が、取得した中間データセット254を識別するために必要となる。
<データ集約処理部261の処理手順>
図17は、本発明の第2の実施の形態のデータ集約処理部261の処理手順を示すフローチャートである。図17に示す処理手順は、図4のステップS517の処理に対応する。
図17に示すフローチャートは、図7に示した各処理からステップS813からS815の処理が削除され、ステップS1611からステップS1613の処理が新たに追加されている。なお、図17に示した処理のうちのステップS811からステップS812、ステップS816からステップS818の処理は、図7のステップS811からステップS812、ステップS816からステップS818の処理と同様であるため説明を省略する。ここでは、図17のステップS1611からステップS1613の処理について説明する。
ステップS812からステップS1611に進んで、データ集約処理部261は、ステップS812で取得した中間データセット254にデータ集合識別子が付与されているか否かを判定する(S1611)。データ集合識別子が付与されている場合には(S1611でYES)、ステップS1612に進む。一方、データ集合識別子が付与されていない場合には(S1611でNO)、ステップS816に進む。
ステップS1612に進んだ場合、データ集約処理部261は、ステップS812で取得した全ての中間データセット254に対して、各中間データセット254の先頭データを参照し、先頭データに含まれる系列データ項目の値を取得し、比較する(S1612)。この処理は、中間データセット結合処理部262によって実行される。なお、先頭データを参照する方法には、例えば、中間データセット254がファイルの場合、ファイルを開いて先頭データを取得する方法がある。また先頭データに含まれる系列データ項目を識別する方法には、例えば、系列データ集約処理の開発時の定義情報を解析する方法や、並列分散処理制御サーバ202からデータ集約処理実行サーバ205に送信する実行要求の中に含める方法、ユーザが系列データ項目を設定する方法がある。
続いてステップS1613に進み、データ集約処理部261は、データ集合識別子を整列した系列データ項目の順序で、中間データセット254を結合する(S1613)。
以上のように、本発明の第2の実施の形態によれば、系列データを分割する際に、分割したデータのチャンクに対してデータ集合識別子を付与することなく、データの集約処理を実行する際に、中間データセットに含まれる先頭データから系列データ項目の順序性を判定し、その順序で中間データセットを結合して並列分散処理アプリケーションを実行することができる。
以上、本発明の各実施形態について説明したが、上記実施形態は本発明の適用例の一つを示したものであり、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
例えば、上記説明においては、グループ抽出処理実行サーバ204はキーの値毎に中間データセットを出力していたが、中間データセットの出力単位はキーの値毎に限定されるものではない。例えば、複数のキーの値をまとめた中間データセットを出力することも可能である。その際、中間データセットの名前には複数のキーを、キーの分割識別子を挟んで連結した値を設定する。キーの分割識別子とは、例えば入力データに含まれるキーに対応したデータ項目の全ての値と重複しない文字列である。
また、例えば、上記説明においては、入力データとして系列データの一種である時系列データを取り上げて説明したが、本発明が対象とする系列データは時系列データには限らない。
すなわち、複数の販売店舗を展開する企業が、購入金額や購入回数が一定以上を上回る優良顧客に対する個別戦略を計画する時に利用する、販売履歴データであってもよい。販売履歴データとは、各店舗を識別するための店舗IDや、商品の購入者を識別するための購入者ID、購入金額などの販売情報を含み、販売履歴データ全体が店舗ID順に並べられている系列データである。
このとき、各店舗単位に収集された販売履歴から優良顧客を抽出して動向を分析することを考えたとき、以下の順序で分析を実行することが想定される。
(1)販売履歴データを入力データとして、購入者をキーとして各購入者の購入回数や全購入金額を計算し、一定以上の購入回数や購入金額を含む優良顧客の販売履歴データを購入者単位に抽出する。
(2)購入者単位に抽出した優良顧客の販売履歴データに対して、店舗毎に購入した商品の種別などの販売傾向を分析する。
この販売履歴データの例では、入力データとなる系列データ項目(店舗ID)と、グループ抽出処理に設定されたキー(購入者ID)が異なり、更に系列データ項目(店舗ID)の順序性に着目した処理を実行している。