JP2014157510A - Stream data processing system, method, and program - Google Patents
Stream data processing system, method, and program Download PDFInfo
- Publication number
- JP2014157510A JP2014157510A JP2013028404A JP2013028404A JP2014157510A JP 2014157510 A JP2014157510 A JP 2014157510A JP 2013028404 A JP2013028404 A JP 2013028404A JP 2013028404 A JP2013028404 A JP 2013028404A JP 2014157510 A JP2014157510 A JP 2014157510A
- Authority
- JP
- Japan
- Prior art keywords
- time
- query
- intermediate result
- processing
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
この発明は、リアルタイムに到来するストリーム・データを処理するための技法に関し、より詳しくは、リアルタイムに到来するストリーム・データのクエリ結果を得るための技法に関する。 The present invention relates to a technique for processing stream data arriving in real time, and more particularly to a technique for obtaining a query result of stream data arriving in real time.
例えば、道路交通シミュレーションにおいて、時々刻々と到来する車の速度やエリアなどの多数のデータに基づき、クエリ結果を迅速に得たいという要望がある。 For example, in a road traffic simulation, there is a demand for quickly obtaining a query result based on a large amount of data such as the speed and area of a vehicle that arrives every moment.
リアルタイム・データに対するクエリの例として、SQLライクな疑似コードで記述すると以下のようなものがある。
SELECT MAX(speed) from "TABLE"
TIME
FROM time.now()
TO time.now() - time.MIN(10)
GroupBy AREA
この式で、"TABLE"とは、時々刻々とハードディスクに蓄積されたリアルタイム・データのテーブルのことである。この式は、現時点から10分前までの間のデータで、最高速度を求めるものであるが、クエリが投入された時点で、全データをスキャンする、ディスクアクセスなどのコストが生じるので、クエリに対する応答レポート生成に多くの時間が必要になる。
An example of a query for real-time data is described as follows in SQL-like pseudo code.
SELECT MAX (speed) from "TABLE"
TIME
FROM time.now ()
TO time.now ()-time.MIN (10)
GroupBy AREA
In this equation, “TABLE” is a table of real-time data accumulated on the hard disk from moment to moment. This formula is the data from the current time to 10 minutes before, and the maximum speed is calculated, but when the query is entered, the cost of scanning all data, disk access, etc. occurs, so for the query It takes a lot of time to generate a response report.
もし計算の範囲(時間窓)が事前に決まっているなら、プリアグリゲーション(pre-aggregation)テーブルが事前集計でき、それによってクエリ結果生成の時間を短縮できるのだが、一般的には道路交通シミュレーションによって蓄積されるデータの場合は刻一刻と計算の範囲が変化して一意に決められないため、プリアグリゲーション・テーブルを用意できない。 If the calculation range (time window) is determined in advance, the pre-aggregation table can be pre-aggregated, thereby shortening the query result generation time. In the case of accumulated data, the pre-aggregation table cannot be prepared because the calculation range changes every moment and cannot be determined uniquely.
特開2006−338432号公報は、ストリームデータの一部、もしくは全部複製し、不揮発性の記憶媒体にアーカイブし、リアルタイムデータとアーカイブデータをシームレスに利用できる機構と、複数のストリームデータ処理システムを連携させ、クエリ処理の性能を向上させる機構を開示する。 Japanese Patent Laid-Open No. 2006-338432 links a plurality of stream data processing systems with a mechanism capable of replicating part or all of stream data, archiving the data in a nonvolatile storage medium, and seamlessly using real-time data and archive data. And a mechanism for improving the performance of query processing is disclosed.
特開2010−108073号公報は、時間ウィンドウを含むクエリのメモリ使用量を一定に保ち、かつ全ての入力データを考慮した正確な計算処理を実現するストリームデータを提供するために、ストリームデータ処理サーバが、クエリ時間解像度変更部で、時間ウィンドウをより小さい幅のサブウィンドウに区切り、クエリ処理エンジンがストリームデータ受付時にサブウィンドウ単位の集計処理を実行して集約タプルを生成し、時間ウィンドウを含むクエリの計算結果を、この集約タプルに対する集計処理によって計算する技法を開示する。 Japanese Patent Laid-Open No. 2010-108073 discloses a stream data processing server in order to provide stream data that realizes accurate calculation processing in consideration of all input data while keeping the memory usage of a query including a time window constant. However, the query time resolution changer divides the time window into smaller sub-windows, and the query processing engine performs aggregation processing for each sub-window when stream data is received, generates an aggregate tuple, and calculates the query including the time window. A technique for calculating a result by an aggregation process for the aggregation tuple is disclosed.
特開2010−217968号公報は、時刻情報が付与されたデータを時系列順に受信し、あらかじめ登録された複数のクエリによって処理する計算機システムで、受信したデータを処理する現用系の計算機と、障害発生時に現用系の計算機の替わりに受信したデータを処理する待機系の計算機とが含まれ、現用系の計算機は、あらかじめ定義された順序で各クエリによって受信したデータを処理し、各クエリによる受信したデータの処理結果を中間データとして、所定のタイミングで、クエリごとに待機系の計算機に送信し、待機系の計算機は、現用系の計算機に障害が発生した場合には、受信したデータ及び中間データを処理することによってデータを復元することを開示する。 Japanese Patent Laid-Open No. 2010-217968 is a computer system that receives data to which time information is attached in chronological order and processes the data according to a plurality of queries registered in advance, and an active computer that processes the received data, This includes a standby computer that processes received data instead of the active computer when it occurs, and the active computer processes the data received by each query in a predefined order and receives it by each query The processing result of the processed data is sent as intermediate data to the standby computer for each query at a predetermined timing. When a failure occurs in the active computer, the standby computer receives the received data and intermediate data Disclosing data by processing the data is disclosed.
特開2011−59967号公報は、時系列に時刻情報が付与されたストリームデータを生成し、その生成したストリームデータについて、登録されたクエリに基づいてストリームデータ処理を行う計算機システムのストリームデータの生成方法であって、計算機システムに、クエリと、ストリームデータを構成する複数種類の構成要素を表すストリーム定義とからそのクエリに対応する前記構成要素を示すクエリ情報を記憶する記憶部と、ストリームデータを生成・送信するデータ生成部と、データ生成部から送信されたストリームデータの処理を行うストリームデータ処理部と、を設け、データ生成部が、そのクエリ情報に基づいて、ストリームデータ処理部に送信するストリームデータからより少ないストリームデータを生成することを開示する。 Japanese Patent Laid-Open No. 2011-59967 generates stream data to which time information is given in time series, and generates stream data for a computer system that performs stream data processing on the generated stream data based on a registered query A method for storing, in a computer system, a storage unit that stores query information indicating a component corresponding to the query from a query and stream definitions representing a plurality of types of components constituting the stream data, and stream data. A data generation unit to generate / transmit and a stream data processing unit to process the stream data transmitted from the data generation unit are provided, and the data generation unit transmits to the stream data processing unit based on the query information Generate less stream data from stream data To disclosure.
しかし、これらの従来技術は、クエリに対する応答レポート生成の時間を短縮する問題に取り組むものではない。 However, these prior arts do not address the problem of reducing the time to generate response reports for queries.
この発明の目的は、リアルタイムに到来するストリーム・データを処理するためのシステムにおいて、クエリに対する応答レポート生成処理を高速化することにある。 An object of the present invention is to speed up a response report generation process for a query in a system for processing stream data coming in real time.
この発明によれば、時間に関する制約を前提とした、リアルタイム・ストリーム・データを処理するためのシステムにおいて、時間解像度を含めたクエリ定義を事前に設定する際に、クエリ定義に従いプリアグリゲーション・テーブルを生成し、アグリゲーション結果を時間解像度ごとに更新(追加・削除)し、作成したプリアグリゲーション・テーブルを利用して、ある時間範囲に生成されたデータに対してクエリを行うことを可能ならしめるようにシステムを構成することによって、上記課題が解決される。 According to the present invention, when a query definition including time resolution is set in advance in a system for processing real-time stream data based on time constraints, a pre-aggregation table is set according to the query definition. Generate, update (add / delete) the aggregation results for each time resolution, and use the created pre-aggregation table to make it possible to query the data generated in a certain time range The above problem is solved by configuring the system.
この発明に従うシステムは、予めユーザが作成した、時間解像度と、時間ウインドウ情報を含むクエリ定義に従い、プリアグリゲーション・テーブル要求を解析して、プリアグリゲーション・テーブル更新スケジューラを登録するとともに、プリアグリゲーション・テーブル更新プログラムを自動生成する。 The system according to the present invention analyzes a pre-aggregation table request and registers a pre-aggregation table update scheduler according to a query definition including a time resolution and time window information created in advance by a user, and registers a pre-aggregation table. Automatically generate an update program.
すなわち、プリアグリゲーション・テーブル更新スケジューラは、時間解像度毎に、時間解像度範囲のデータ抽出フィルタを生成し、プリアグリゲーション・テーブル更新プログラムは、センサなどからリアルタイムに到来するストリーム・データに時間解像度範囲のデータ抽出フィルタを適用することによって、集計結果のみを含むKey, Valueの値を生成し、それをプリアグリゲーション・テーブルに追加する。 That is, the pre-aggregation table update scheduler generates a data extraction filter in the time resolution range for each time resolution, and the pre-aggregation table update program reads the data in the time resolution range into stream data that arrives in real time from a sensor or the like. By applying the extraction filter, a value of Key and Value including only the aggregation result is generated and added to the pre-aggregation table.
この発明に従うシステムは、クライアント・システムからクエリを受信することに応答して、そのクエリ内の時間範囲のデータをフィルタするキーを用いたリダクション・プロセスをプリアグリゲーション・テーブルに適用することで、高速にクエリに対応するレポートを生成する。 In response to receiving a query from a client system, the system according to the present invention applies a reduction process with a key that filters data in the time range in the query to the pre-aggregation table to speed up the process. Generate a report corresponding to the query.
この発明に従うシステムは、プリアグリゲーション・テーブル更新プログラムによって、時間ウインドウの時間よりも古いデータをプリアグリゲーション・テーブルの末尾から削除し、これによって、プリアグリゲーション・テーブルのデータが増大し続けることを防ぐ。 The system according to the present invention deletes data older than the time window by the pre-aggregation table update program from the end of the pre-aggregation table, thereby preventing the data of the pre-aggregation table from continuing to increase.
以上のように、この発明によれば、集計されたエントリをもち、サイズが時間ウインドウの範囲に収まるようにエントリを削除していくようにしたプリアグリゲーション・テーブルを生成して、このプリアグリゲーション・テーブルに基づきクエリに対するレポートを生成するようにすることによって、集計されたエントリを利用して集計処理を合理化するとともに、限定されたサイズのプリアグリゲーション・テーブルをスキャンすればいいので、短時間でクエリに対応するレポートを生成できるという効果を奏する。 As described above, according to the present invention, the pre-aggregation table is generated by generating the pre-aggregation table having the aggregated entries and deleting the entries so that the size is within the time window range. By generating reports for queries based on tables, you can streamline the aggregation process using the aggregated entries and scan a limited size pre-aggregation table, so you can quickly query The effect is that a report corresponding to can be generated.
以下、図面に従って、本発明の実施例を説明する。これらの実施例は、本発明の好適な態様を説明するためのものであり、発明の範囲をここで示すものに限定する意図はないことを理解されたい。また、以下の図を通して、特に断わらない限り、同一符号は、同一の対象を指すものとする。 Embodiments of the present invention will be described below with reference to the drawings. It should be understood that these examples are for the purpose of illustrating preferred embodiments of the invention and are not intended to limit the scope of the invention to what is shown here. Further, throughout the following drawings, the same reference numerals denote the same objects unless otherwise specified.
図1は、本発明を実施するためのシステムの一例の概要構成を示す図である。図1において、車両104、106は、パケット通信網102を通じて、サーバ110aに、プローブカー・データを送信する。尚、実際は、何千台あるいは何万台レベルの車両からプローブカー・データを受信するが、ここでは例示的に2台だけ表示されていることに留意されたい。
FIG. 1 is a diagram showing a schematic configuration of an example of a system for carrying out the present invention. In FIG. 1,
プローブカーデータを利用した交通データ収集技法は公知であり、例えば、特開2004−110458号公報、特開2004−156982号公報、特開2007−193705号公報、特開2004−241987号公報などを参照されたい。このシステムは、そのような周知の技法を使用して、車両の速度、位置、加速度などのデータを時々刻々し受け取る。 Traffic data collection techniques using probe car data are known. For example, JP 2004-110458 A, JP 2004-156882 A, JP 2007-193705 A, JP 2004-241987 A, etc. Please refer. The system uses such well-known techniques to receive data such as vehicle speed, position, and acceleration from time to time.
サーバ110aは、LAN、WAN、FHHTなどのどれかの接続構成である、ネットワーク108に接続され、ネットワーク108にはさらに、サーバ110b、110c、・・・、110m、サーバ112、116、118a、・・・、118kが接続されている。これらのサーバとして、これには限定されないが、インターナョナル・ビジネス・マシーンズ・コーポレーションから購入可能な、IBM(R) System X、System i、System pなどの機種のサーバを使うことができる。これらのサーバで使用可能なオペレーティング・システムとして、AIX(商標)、UNIX(商標)、Linux(商標)、Windows(商標)2003 Serverなどがあるが、この実施例では、Linux(商標)を導入するものとする。
The
サーバ110a、サーバ110b、110c、・・・、110mには、IBM(R) InfoSphere Streamsが導入され、サーバ110a、サーバ110b、110c、・・・、110mは、ストリーム・サーバを構成する。
The
サーバ116にはHadoopが導入され、サーバ116において、Hadoopのプロジェクトの1つであるHbaseを使って、カラムナー・テーブル(columnar table)116aが実現される。
Hadoop is installed in the
サーバ112にもHadoopが導入され、サーバ112において、Hadoopのプロジェクトの1つであるHiveを使って、クエリ・サーバ112aが実現される。サーバ112には、クライアント・コンピュータ114が接続され、クライアント・コンピュータ114には、GUIの操作により、後述する時間粒度(time resolution)と、時間窓(time window)の情報を含むクエリ定義ファイルを生成するためのプログラムが導入されている。
Hadoop is also introduced into the
サーバ118a、・・・、118kは、複数台の各々に、JobTracker、NameNode、TaskTracker、DataNodeの役割を割り当てることにより、MapReduceを構成する。あるいは、単一のサーバで、これらの全ての役割を担わせることもできる。
The
次に、図2を参照して、本発明のシステムの機能構成の概要について説明する。図2において、車両104は、センサ104aを備え、アラータ(alerter)104bを介して、プローブカー・データを、サーバ110a、サーバ110b、110c、・・・、110mから構成されるストリーム・システム200に送信する。ストリーム・システム200は、接続マネジャ202、アラータ(alerter)204、マテリアライズド・ビュー用ETL206をもち、接続マネジャ202は、受信したプローブカー・データを、アラータ204と、マテリアライズド・ビュー用ETL206に送る。
Next, an overview of the functional configuration of the system of the present invention will be described with reference to FIG. In FIG. 2, a
サーバ116は、マテリアライズド・ビュー用ETL206から受け取ったデータに基づき、主記憶上に、Hbaseにより、カラムナー(columnar)・テーブル116aを作成する。
Based on the data received from the materialized
サーバ116は、サーバ118a、・・・、118kのうちの所定のサーバ群により構成されたMapReduce208により、プリアグリゲーション・テーブル(PAT)116bを主記憶上に生成する。サーバ116はまた、サーバ118a、・・・、118kのうちの所定のサーバ群により構成されたMapReduce210により、クエリ・サーバ112aから受け取ったクエリに従い、プリアグリゲーション・テーブル116bからデータを抽出してレポートを作成する処理を行う。
The
MapReduce208上で実行されるプログラムは、クライアント・コンピュータ114でユーザにより作成される、クエリ定義ファイルの内容に基づき生成される。
The program executed on
クエリアプリ定義ファイルの内容の例は、以下のとおりである。
Application: {
AggFunction :{avg,sum,cnt,max,min},
GroupBy: {
"Area" : Hash1(gps), // 47 types
"Age" : Hash2(age) // 6 types
},
Measures: {
"speed" : float, // per hour
"LineChange" : int, // per intr
"quickBrake" : int, // per intr
}
resolution : 60 // 1 min
window : 3600 // 60 mins
}
An example of the contents of the query application definition file is as follows.
Application: {
AggFunction: {avg, sum, cnt, max, min},
GroupBy: {
"Area": Hash1 (gps), // 47 types
"Age": Hash2 (age) // 6 types
},
Measures: {
"speed": float, // per hour
"LineChange": int, // per intr
"quickBrake": int, // per intr
}
resolution: 60 // 1 min
window: 3600 // 60 mins
}
クエリアプリ定義ファイルの内容の例において、AggFunctionは使用される集計関数をリストする。avgは平均、sumは合計、cntはカウント、maxは最大、minは最小をあらわす。 In the example query app definition file content, AggFunction lists the aggregate functions used. avg is average, sum is total, cnt is count, max is maximum, min is minimum.
GroupByは、どのキーで集約するかを示す。ここでは、Area(区域)と、Age(年代)で集約すると指定されている。ここで、例えば、Hash1(gps)とあるのは、gpsの値を入力して、都道府県名を返す関数であり、次のようなコードである。
Hash1(gps) {
if gps.lt > 10 and gps.lg < 100:
return "tokyo"
elif gps.lt > 12 and gps.lg > 10:
return "osaka"
...
}
GroupBy indicates which key is used for aggregation. Here, it is specified to be aggregated by Area (area) and Age (age). Here, for example, Hash1 (gps) is a function that inputs the value of gps and returns the prefecture name, and has the following code.
Hash1 (gps) {
if gps.lt> 10 and gps.lg <100:
return "tokyo"
elif gps.lt> 12 and gps.lg> 10:
return "osaka"
...
}
Hash2(age)も、年代を層別する関数として適宜定義される。 Hash2 (age) is also appropriately defined as a function that stratifies age.
プリアグリゲーション・テーブルで、レコードのキーは、時間+集約キーで生成される。一例では、キーは、2012/01/01_10:00:00_tokyo_10のようになる。 In the pre-aggregation table, the record key is generated by time + aggregation key. In one example, the key is like 2012/01 / 01_10: 00: 00_tokyo_10.
resolutionとあるのは、プリアグリゲーション・テーブルでデータを集約する時間粒度であり、windowとあるのは、その時間が経過したら、プリアグリゲーション・テーブルからレコードが消されてしまう時間の幅である。 “Resolution” is the time granularity for aggregating data in the pre-aggregation table, and “window” is the width of time that records are deleted from the pre-aggregation table after the time has elapsed.
図3は、そのようにして作成されたクエリアプリ定義ファイルに基づき、プリアグリゲーション・テーブル(PAT)を生成し、PATスケジューラを登録し、更にはMapReduce208を動作させるプログラムを生成するための機能ブロックを示す図である。
FIG. 3 shows a functional block for generating a pre-aggregation table (PAT) based on the query application definition file thus created, registering the PAT scheduler, and further generating a program for operating
図3において、クエリアプリ定義ファイル302は、クライアント・コンピュータ114で作成されて、例えば、クライアント・コンピュータ114のハードディスク上または、主記憶上に保持されているとする。
In FIG. 3, it is assumed that the query
クエリサービスを実行するサーバ112のハードディスクには、クエリアプリ定義ファイル302を要求解析するPAT要求解析モジュール304と、PAT要求解析モジュール304の解析結果に基づきプリアグリゲーション・テーブル116bを作成するPAT作成モジュール306と、PAT要求解析モジュール304の解析結果に基づきPATスケジューラ312にスケジュールを登録するPATスケジューラ登録モジュール308と、PAT要求解析モジュール304の解析結果に基づきMapReduce208を動作させるためのMAPPER/REDUCERプログラムを生成するためのPAT更新プログラム作成モジュール310が保存され、クライアント・コンピュータ114などからの操作に応答して、適宜呼び出されて主記憶にロードされ実行される。
On the hard disk of the
尚、この実施例では、クエリサービスを実行するサーバ112を、PAT要求解析などを行わせるサーバとして兼用しているが、別のサーバを立てて、PAT要求解析、PAT作成、PATスケジューラ登録、及びPAT更新プログラム作成などの処理を実行させるようにしてもよい。
In this embodiment, the
サーバ116においては、ストリーム・システム200から受領したデータに従い主記憶上に形成したカラムナー・テーブル116aに基づき、MapReduce208が、PATスケジューラ312のスケジューリングに従い動作して、集約したデータ314を作成し、プリアグリゲーション・テーブル116bに追加する。
In the
次に図4のフローチャートを参照して、プリアグリゲーション・テーブル(PAT)の生成に関連する処理について説明する。図4のステップ402で、PAT要求解析モジュール304が、クエリアプリ定義ファイル302を読み込んで、クエリ定義Dに対するPAT生成処理を開始する。
Next, processing related to generation of a pre-aggregation table (PAT) will be described with reference to the flowchart of FIG. In
ステップ404で、PAT要求解析モジュール304は、PATが存在するかどうか判断し、もしそうでないなら、ステップ406で、PAT定義と合致する(K,V)のスキーマを定義してPAT作成モジュール306を呼び出し、データを保存するPATを生成する。ここでPAT定義とは、時間解像度、(任意個の)グループ化指示列、対象データ列、集約関数の組み合わせをKEYとするとき、グループ化後の対象データ列に対して集約関数を適用結果のスカラー値をVALUEとして参照可能なKey Value Store型のテーブルである。図5は、スキーマに基づくPAT作成モジュール306の処理の例を示す図である。すなわち、PAT作成モジュール306は、ステップ502で新規テーブルを作成し、クエリアプリ定義ファイル302に基づき、ステップ504でキーを生成し、ステップ506でカラム・ファミリ(CF)を定義し、プリアグリゲーション・テーブル116bを生成する。
In
キーは、時間+集約フィールドであらわされる。この例では、Area+Ageが集約フィールドである。 The key is represented as a time + summary field. In this example, Area + Age is the aggregate field.
この段階では、空のプリアグリゲーション・テーブル116bだけであるが、参考のために、具体的なエントリの例も示す。この例では、時間解像度(resolution) = 60秒なので、先頭のエントリ2012/01/01_10:00:00_tokyo_10 {“avg”:42.3, “max”:120.2, “min”:0.0, “cnt”:10, “sum”:423}...は、60秒間の集約データである。
At this stage, there is only an empty pre-aggregation table 116b, but an example of a specific entry is also shown for reference. In this example, time resolution (resolution) = 60 seconds, so the
図4のフローチャートに戻って、ステップ408では、PAT要求解析モジュール304は、クエリ定義Dに対応したPATへのデータ追加を行う集約プログラム(=P)が存在するか判断し、そうでないなら、ステップ410で、PAT更新プログラム作成モジュール310を呼び出して、センサーデータを入力として、Dの定義に従い集計し、集計時刻、グループ化列、対象データ列、集約関数をKEY、この集計結果をVALUEとするレコードを生成するプログラムを生成する。
Returning to the flowchart of FIG. 4, in
下記に示すのは、
Application: {
AggFunction :{avg,sum,cnt,max,min},
GroupBy: {
"Area" : Hash1(gps), // 47 types
"Age" : Hash2(age) // 6 types
},
Measures: {
"speed" : float, // per hour
"LineChange" : int, // per intr
"quickBrake" : int, // per intr
}
resolution : 60 // 1 min
window : 3600 // 60 mins
}
というクエリアプリ定義ファイル302からPAT作成モジュール306が生成するMap/Reduce用の集約プログラムのコードの例を示す。ここで示すのは疑似コードであるが、実際は、Java(R)、Pythonなどの既存の任意のプログラミング言語で記述することができる。
class MAPPER:
method INITIALIZE():
Set<K,V> set = new Set<K,V>() // K=str, V=tuple
method MAP(string t, row r):
str s = String.format(“%s-%s-%s”, time, Hash1(r.gps), Hash2(r.age))
// for CF:Speed
float sum1 = r.speed, float cnt1 = 1
float max1 = max(r.speed), float min1 = min(r.speed)
tuple t1 = new tuple(sum:sum1, cnt:cnt1, max:max1, min:min1)
set.add(“SP”, t1)
// for CF:LineChange
float sum2 = r.lineChange, float cnt2 = 1
float max2 = max(r.lineChange), float min2 = min(r.lineChange)
tuple t2 = new tuple(sum:sum2, cnt:cnt2, max:max2, min:min2)
set.add(“LC”, t2)
EMIT(str s, Set set)
class REDUCER:
method INITIALIZE():
float sum1,sum2,cnt1,cnt2,max1,max2,min1,min2 = 0
method REDUCE(str s, sets[r1, r2, ..]):
for all Set set ∈ sets[r1, r2, …] do
sum1 = sum1 + set.get(“SP”).sum, sum2 = sum2 + set.get(“LC”).sum
cnt1 = cnt1 + set.get(“SP”).cnt, cnt2 = cnt2 + set.get(“LC”).cnt
max1 = set.get(“SP”).max > max1 ? Set.get(“SP”).max : max1
done
writeToIncrementalDB(s, CF=“SP”, sum1, cnt1, max1, min1)
writeToIncrementalDB(s, CF=“LC”, sum2, cnt2, max2, min2)
このようにして生成された集約プログラムのコードは、MapReduceシステム208を動作させる。尚、ここではresolutionとwindowの値はあらわれないが、それらの設定値は、PATスケジューラ312に設定される。
The following shows
Application: {
AggFunction: {avg, sum, cnt, max, min},
GroupBy: {
"Area": Hash1 (gps), // 47 types
"Age": Hash2 (age) // 6 types
},
Measures: {
"speed": float, // per hour
"LineChange": int, // per intr
"quickBrake": int, // per intr
}
resolution: 60 // 1 min
window: 3600 // 60 mins
}
An example of Map / Reduce aggregation program code generated by the
class MAPPER:
method INITIALIZE ():
Set <K, V> set = new Set <K, V> () // K = str, V = tuple
method MAP (string t, row r):
str s = String.format (“% s-% s-% s”, time, Hash1 (r.gps), Hash2 (r.age))
// for CF: Speed
float sum1 = r.speed, float cnt1 = 1
float max1 = max (r.speed), float min1 = min (r.speed)
tuple t1 = new tuple (sum: sum1, cnt: cnt1, max: max1, min: min1)
set.add (“SP”, t1)
// for CF: LineChange
float sum2 = r.lineChange, float cnt2 = 1
float max2 = max (r.lineChange), float min2 = min (r.lineChange)
tuple t2 = new tuple (sum: sum2, cnt: cnt2, max: max2, min: min2)
set.add (“LC”, t2)
EMIT (str s, Set set)
class REDUCER:
method INITIALIZE ():
float sum1, sum2, cnt1, cnt2, max1, max2, min1, min2 = 0
method REDUCE (str s, sets [r1, r2, ..]):
for all Set set ∈ sets [r1, r2,…] do
sum1 = sum1 + set.get (“SP”). sum, sum2 = sum2 + set.get (“LC”). sum
cnt1 = cnt1 + set.get (“SP”). cnt, cnt2 = cnt2 + set.get (“LC”). cnt
max1 = set.get (“SP”). max> max1? Set.get (“SP”). max: max1
done
writeToIncrementalDB (s, CF = “SP”, sum1, cnt1, max1, min1)
writeToIncrementalDB (s, CF = “LC”, sum2, cnt2, max2, min2)
The code of the aggregate program generated in this way causes the
図4のフローチャートに戻って、PAT要求解析モジュール304は、ステップ412で、PATスケジューラ登録集約モジュール308によって、PATスケジューラ312に、プログラムを時間解像度ごとに起動するようにスケジューリングする。PATスケジューラ312は、実質的に、上記のMapReduce用のコードの外にあるドライバの中でハンドルすることができる。例えば:
*/1 * * * * hadoop jar PAT-Update-MR.jar
などとすると、1分ごとに更新プログラムが起動する。起動されたプログラムのドライバrでは、まず現在時刻を取得し、どこの時点に対する集約をするかを決定する。例えば、現在時刻を取得して12:01:02 だとしたとき、基準となる集約時刻を12:01にすると決める。これは実装の問題であり、自由に変更できる。この12:01という基準がプログラム実行時に動的に決定されると、ここからresolution時間分をさかのぼって、12:00:00 - 12:00:59 という時間範囲(=resolution)のデータをMapの入力とするというように一意に決定される。この範囲内のデータは、12:01という時刻に関して紐付けられるので、最終的なReduceの結果をPATに書き込む段階で、keyの一つとして利用される。
Returning to the flowchart of FIG. 4, the PAT
* / 1 * * * * hadoop jar PAT-Update-MR.jar
For example, the update program starts every minute. The driver r of the activated program first obtains the current time, and decides at what point of time it should be consolidated. For example, when the current time is acquired and it is 12:01:02, the reference aggregation time is determined to be 12:01. This is an implementation issue and can be changed freely. If this 12:01 criterion is dynamically determined at the time of program execution, the resolution time is traced back from here, and the data in the time range (= resolution) of 12:00:00-12:00:59 It is uniquely determined as input. Since data within this range is linked with respect to the time of 12:01, it is used as one of the keys at the stage of writing the final Reduce result to the PAT.
ステップ414では、集約プログラムPが、MapReduce208上で、現在の時刻=T1として保存し、ステップ416で、PATスケジューラ312が、センサーデータの入力のうち、最後に実行した時刻(=T0)と現在の時刻(=T1)を範囲にフィルタするルールをPに与えて集約プログラムPを実行し、結果を出力(=R)する。ここでいうルールとは、保存されているデータを現在の時刻から時間解像度前までのデータを入力とするようなフィルタ・ルールであり、PAT要求解析モジュール304の解析結果に基づき、PATスケジューラ312が予め作成する。そして、MapReduce208は、時間解像度の幅にフィルタされたデータを入力に指定し、集約プログラムをMapReduce実行する。その際、スケジューリングとは、時間解像度経過後に、上記ルール作成・MR実行を繰り返し行うようにスケジューリングすることである。
In
より詳細には、Map処理とは、時間解像度(現在の時刻)とGroupByのIDを組み合わせたkeyを、入力データからMeasureで指定したvalueを選択したTupleを生成し、Map処理の出力とすることであり、Reduce処理は、keyごとにグループされたTuple群を入力とし、集約関数をTuple内のvalueごとに分けて集約演算を行うことである。Keyに対する集約結果を新たなTupleとして、reduce処理の出力に利用する。Reduce処理はさらに、この出力をアグリゲーションテーブルに追加し、同時に現在の時刻からwindow time前のデータを削除することを含む。これは、図4のステップ418の、PATの先頭にRを追加、および、Dに設定されたTime Window時間よりも古いデータをPATの末尾から削除する処理に対応する。図6は、PATの末尾のデータが削除される様子を示す。
More specifically, Map processing is to generate a Tuple that selects the value specified by Measure from the input data, using the key that combines the time resolution (current time) and GroupBy ID, and outputs it as Map processing output. In the Reduce process, a Tuple group grouped for each key is input, and an aggregation function is divided into values in the Tuple to perform an aggregation operation. The aggregation result for Key is used as a new Tuple for the output of reduce processing. The Reduce process further includes adding this output to the aggregation table and simultaneously deleting the data before window time from the current time. This corresponds to the processing of adding R to the beginning of the PAT and deleting data older than the Time Window time set in D from the end of the PAT in
ステップ420で、PATスケジューラ312は、T0にT1の時刻を保存後、時間解像度時間経過するまで停止し、ステップ422で、クライアント・コンピュータ114などから、実行停止要求が来ているかどうか判断し、もしそうなら、実行を終了し、そうでないなら、ステップ414に戻る。
In
図7は、クライアント・コンピュータ114で作成したOLAPクエリ702に基づき、この発明に従いクエリに対するレポートを作成する処理の機能ブロックを示す図である。
FIG. 7 is a diagram showing functional blocks of processing for creating a report for a query according to the present invention based on the
OLAPクエリ702は例えば、SQLライクな疑似コードで示すと、以下のとおりである。
SELECT AVG(speed) from PAT
TIME
FROM time.now()
TO time.now() - time.MIN(2)
GroupBy area
これは、今から2分前までの時間の間の速度の平均値を求めるクエリである。
The
SELECT AVG (speed) from PAT
TIME
FROM time.now ()
TO time.now ()-time.MIN (2)
GroupBy area
This is a query that finds the average speed over a period of 2 minutes from now.
サーバ112にあるクエリ・サーバ112aは、OLAPクエリ702を、好適にはHadoopのプロジェクトの1つである、Hiveを用いて、フィルタ条件に変換する。このフィルタ条件は、ルールとして、サーバ116内のフィルタ706に加えられる。これに応答して、フィルタ706は、プリアグリゲーション・テーブル116bから、設定されたルールに従い、選択した範囲のデータを抽出する。
The
クエリ・サーバ112aは一方で、MapReduce210に、MapReduceプログラム708を提供し、これにより、MapReduce210は、MapReduceプログラム708によって指定された集約処理を行って、結果のレポート710を生成する。結果のレポート710は、サーバ116の通信モジュール712によってクライアント・コンピュータ114の表示モジュール704に送られ、表示モジュール704は結果のレポート710を適宜、グラフ表示する。
On the other hand, the
次に図8のフローチャートを参照して、クエリ処理を説明する。図8のステップ802では、クエリ・サーバ112aが、サブミットされたクエリ要求に対する結果の生成を開始する。尚、図8のフローチャートを通じて、Dはクエリアプリ定義ファイル、QはサブミットされたOLAPクエリとする。
Next, query processing will be described with reference to the flowchart of FIG. In
ステップ804で、クエリ・サーバ112aは、Qの結果生成に必要なデータがDで定義されているかどうかを判断し、そうでないなら、ステップ806で、終了処理エラーをクエリ要求元に返し、そうならステップ808に進む。
In
ステップ808で、クエリ・サーバ112aは、Qで要求する時間解像度がDに定義された時間解像度よりも長いかどうか判断し、そうでないなら、ステップ806で、終了処理エラーをクエリ要求元に返し、そうならステップ810で、現在の時刻 = T0として保存する。
In
ステップ812で、クエリ・サーバ112aは、Qの結果生成で要求される時間の範囲がT0に対して未来の時間を含むか判断し、そうでないなら、フィルタ706にルールを送ることにより、ステップ814でQに記述された時間範囲をフィルタしPATから該当するレコードを抽出し、ステップ816で、Qで要求される集約関数、グループ化列、対象データ列に対応する集約関数適用済みの値をこのフィルタされたレコードから抽出し、同じ集約関数をこれらにさらに適用して、計算結果を出力(=R)し、ステップ818でクエリ結果をクエリ要求元に返して、処理を終了する。
At
ステップ812に戻って、クエリ・サーバ112aが、Qの結果生成で要求される時間の範囲がT0に対して未来の時間を含むと判断すると、クエリ・サーバ112aは、ステップ820で、処理1(すなわち、ステップ814と、それに続くステップ816)を行い、T0より過去の時間のレコードをPATから抽出し、Qの結果を出力する (=R)。
Returning to step 812, if the
次にクエリ・サーバ112aは、ステップ822で、Qで要求される最も先の時間 = T2として保存し、ステップ824で、時間解像度時間経過するまで停止する。
The
そしてクエリ・サーバ112aは、ステップ826で、PATの先頭を読み込み、最新のエントリのQに対応する集約結果を取得し、Rと合成して結果を出力 (=R)し、ステップ828で、(現在の時刻=T1) < T2かどうか判断し、もしそうなら、ステップ824に戻る。そして、T1がT2を過ぎると、クエリ・サーバ112aは、ステップ818でクエリ結果をクエリ要求元に返して、処理を終了する。
Then, in
図9は、図7及び図8で示すクエリ処理の例を図式的に示す図である。図9において、ユーザがOLAPクエリ702をサブミットすると、クエリ・サーバ112aは、そこから、図示されているように、時間のキー・フィルタリング902と、カラム・ファミリの値フィルタリング904を生成する。そして、クエリ・サーバ112aは、これらのフィルタリングからルールを生成し、フィルタ706に適用し、これによって選択された範囲のテーブル・データ906が得られる。
FIG. 9 is a diagram schematically illustrating an example of the query processing illustrated in FIGS. 7 and 8. In FIG. 9, when a user submits an
クエリ・サーバ112aは、選択された範囲のテーブル・データ906に対して、MapReduce210上で、Map関数908と、Reduce関数910を呼び出して最終リダクションを行い、結果のレポート710を得る。このような一連の処理は、リダクション・プロセスと呼ばれる。結果のレポート710は、ユーザ側に返送される。
The
以上、本発明を、Hadoop(商標)フレームワークのMapReduceで実装する実施例において、プリアグリゲーション・テーブルの生成にHbaseを使用し、クエリ・サーバにHiveを使用する実施例として説明してきたが、プリアグリゲーション・テーブルの生成には、Hbase以外に、Cassandra、Memcachedなどを使用することができる。 As described above, in the embodiment in which the present invention is implemented by MapReduce of the Hadoop (trademark) framework, the Hbase is used for generating the pre-aggregation table and the Hive is used for the query server. In addition to Hbase, Cassandra, Memcached, etc. can be used to generate the aggregation table.
また、この発明は、HadoopあるいはMapReduceに限定されず、任意のオペレーティング・システム及びハードウェアをもつコンピュータ・プラットフォーム上で実装可能である。 The present invention is not limited to Hadoop or MapReduce, and can be implemented on a computer platform having an arbitrary operating system and hardware.
さらに、この発明は、プローブカー・データのみならず、気象データ、金融データ、その他シミュレーションなど、時間付でデータを受け取ってテーブルに集約する任意の適用例に使用することができる。 Further, the present invention can be used not only for probe car data but also for any application example that receives data with time and aggregates it into a table such as weather data, financial data, and other simulations.
112・・・クエリ用サーバ
112a・・・クエリ・サーバ
114・・・クライアント・コンピュータ
116a・・・プリアグリゲーション・テーブル
200・・・ストリーム・システム
208、210・・・MapReduceシステム
302・・・クエリアプリ定義ファイル
304・・・PAT解析要求モジュール
306・・・PAT作成モジュール
308・・・PATスケジューラ登録モジュール
310・・・PAT更新プログラム作成モジュール
312・・・PATスケジューラ
702・・・OLAPクエリ
112 ...
Claims (18)
指定された時間解像度と保存期間の値を用いて、現在の時間から該時間解像度の時間が経過するまでの前記データからクエリ処理結果を生成するための中間結果を保存することと、前記保存期間の経過後は前記保存した中間結果を削除する中間結果処理ステップと、
前記中間結果処理ステップを、指定された時間解像度の時間ごとに動作させるようにスケジュールするステップと、
クエリを受信することに応答して、前記中間結果からクエリ結果を生成するステップを有する、
方法。 In a system for querying data generated in real time by computer processing,
Storing an intermediate result for generating a query processing result from the data from the current time until the time of the time resolution elapses, using the specified time resolution and storage period value; and the storage period An intermediate result processing step for deleting the stored intermediate result after elapse of
Scheduling the intermediate result processing step to operate every time of a specified time resolution;
Generating a query result from the intermediate result in response to receiving a query;
Method.
前記コンピュータに、
指定された時間解像度と保存期間の値を用いて、現在の時間から該時間解像度の時間が経過するまでの前記データからクエリ処理結果を生成するための中間結果を保存することと、前記保存期間の経過後は前記保存した中間結果を削除する中間結果処理ステップと、
前記中間結果処理ステップを、指定された時間解像度の時間ごとに動作させるようにスケジュールするステップと、
クエリを受信することに応答して、前記中間結果からクエリ結果を生成するステップを実行させる、
プログラム。 In a system for querying data generated in real time by computer processing,
In the computer,
Storing an intermediate result for generating a query processing result from the data from the current time until the time of the time resolution elapses, using the specified time resolution and storage period value; and the storage period An intermediate result processing step for deleting the stored intermediate result after elapse of
Scheduling the intermediate result processing step to operate every time of a specified time resolution;
Generating a query result from the intermediate result in response to receiving the query;
program.
指定された時間解像度と保存期間の値を用いて、現在の時間から該時間解像度の時間が経過するまでの前記データからクエリ処理結果を生成するための中間結果を保存することと、前記保存期間の経過後は前記保存した中間結果を削除する中間結果処理手段と、
前記中間結果処理ステップを、指定された時間解像度の時間ごとに動作させるようにスケジュールする手段と、
クエリを受信することに応答して、前記中間結果からクエリ結果を生成する手段を有する、
システム。 In a system for querying data generated in real time by computer processing,
Storing an intermediate result for generating a query processing result from the data from the current time until the time of the time resolution elapses, using the specified time resolution and storage period value; and the storage period Intermediate result processing means for deleting the stored intermediate result after elapse of
Means for scheduling said intermediate result processing step to operate every time of a specified time resolution;
Means for generating a query result from the intermediate result in response to receiving a query;
system.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013028404A JP2014157510A (en) | 2013-02-15 | 2013-02-15 | Stream data processing system, method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013028404A JP2014157510A (en) | 2013-02-15 | 2013-02-15 | Stream data processing system, method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014157510A true JP2014157510A (en) | 2014-08-28 |
Family
ID=51578342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013028404A Pending JP2014157510A (en) | 2013-02-15 | 2013-02-15 | Stream data processing system, method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014157510A (en) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9984134B2 (en) | 2013-12-13 | 2018-05-29 | International Business Machines Corporation | Extraction device, data processing system, and extraction method |
JP2018528506A (en) * | 2015-08-05 | 2018-09-27 | アビニシオ テクノロジー エルエルシー | Selecting a query to run against a real-time data stream |
JP2018160057A (en) * | 2017-03-22 | 2018-10-11 | 株式会社東芝 | Information processing system, information processing method, and program |
US10901702B2 (en) | 2013-12-05 | 2021-01-26 | Ab Initio Technology Llc | Managing interfaces for sub-graphs |
EP3896908A1 (en) | 2020-04-15 | 2021-10-20 | Fujitsu Limited | Event stream processing system, event stream processing method, event stream processing program |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006294831A (en) * | 2005-04-11 | 2006-10-26 | Hitachi Kokusai Electric Inc | Data collecting system |
JP2009193306A (en) * | 2008-02-14 | 2009-08-27 | Yamatake Corp | Environmental data management apparatus and method |
-
2013
- 2013-02-15 JP JP2013028404A patent/JP2014157510A/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006294831A (en) * | 2005-04-11 | 2006-10-26 | Hitachi Kokusai Electric Inc | Data collecting system |
JP2009193306A (en) * | 2008-02-14 | 2009-08-27 | Yamatake Corp | Environmental data management apparatus and method |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901702B2 (en) | 2013-12-05 | 2021-01-26 | Ab Initio Technology Llc | Managing interfaces for sub-graphs |
US9984134B2 (en) | 2013-12-13 | 2018-05-29 | International Business Machines Corporation | Extraction device, data processing system, and extraction method |
JP2018528506A (en) * | 2015-08-05 | 2018-09-27 | アビニシオ テクノロジー エルエルシー | Selecting a query to run against a real-time data stream |
JP7023718B2 (en) | 2015-08-05 | 2022-02-22 | アビニシオ テクノロジー エルエルシー | Selecting a query to execute against a real-time data stream |
JP2018160057A (en) * | 2017-03-22 | 2018-10-11 | 株式会社東芝 | Information processing system, information processing method, and program |
EP3896908A1 (en) | 2020-04-15 | 2021-10-20 | Fujitsu Limited | Event stream processing system, event stream processing method, event stream processing program |
US11507568B2 (en) | 2020-04-15 | 2022-11-22 | Fujitsu Limited | Event stream processing system, event stream processing method, event stream processing program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836533B2 (en) | Automated reconfiguration of real time data stream processing | |
US10387426B2 (en) | Streaming microservices for stream processing applications | |
CN109716320B (en) | Method, system, medium and application processing engine for graph generation for event processing | |
US11625381B2 (en) | Recreating an OLTP table and reapplying database transactions for real-time analytics | |
US9633079B2 (en) | Generating and using temporal metadata partitions | |
US10122788B2 (en) | Managed function execution for processing data streams in real time | |
US20200183929A1 (en) | Database workload capture and replay | |
US9582541B2 (en) | Systems, methods, and computer program products to ingest, process, and output large data | |
US9165048B2 (en) | Linked field table for databases | |
US11675779B2 (en) | Enhanced high performance real-time relational database system and methods for using same | |
JP2019535058A (en) | Management of snapshots and status by microbatch method | |
US8290939B2 (en) | Visualizing query results in stream processing systems | |
US11954125B2 (en) | Partitioned backing store implemented in a distributed database | |
JP2014157510A (en) | Stream data processing system, method, and program | |
JP2017518561A (en) | Processing data from multiple sources | |
EP3172682B1 (en) | Distributing and processing streams over one or more networks for on-the-fly schema evolution | |
US20190102431A1 (en) | Logical queries in a distributed stream processing system | |
CN114145027A (en) | System for processing geolocation event data for low latency | |
US10812322B2 (en) | Systems and methods for real time streaming | |
US20180248977A1 (en) | Selective distribution of messages in a publish-subscribe system | |
CN114547208B (en) | Method and native distributed database for full link trace transactions | |
US20120254337A1 (en) | Mainframe Management Console Monitoring | |
US10877988B2 (en) | Real-time change data from disparate sources | |
US8880504B2 (en) | Tag management device, system and recording medium | |
US11182386B2 (en) | Offloading statistics collection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160209 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20161028 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20161108 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20161208 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20170207 |