Talend Big Data で Amazon DynamoDB のデータを操作する方法

Talend Big Data で DynamoDB のデータを操作する

English: Talend logo Français : Talend logo
English: Talend logo Français : Talend logo (Photo credit: Wikipedia)

Talend Open Studio for Big Data とは?

Talend Big Data というソフトウェアは、近年話題になっているビッグデータを処理するためのソフトウェアです。ビッグデータとは主に NoSQL と呼ばれる新しいデータベースで、ElasticSearch、MongoDB、Cassandra、Amazon DynamoDB 等が有名です。

Oracle や SQL Server、MySQL、PostgreSQL 等のリレーショナル・データベースとは異なり、大規模データを扱うことを指しています。ソーシャルネットワークの流行などでデータの増加量は膨大で、爆発的に増えていますので、そのような大規模データは既存のデータベース扱うにはパフォーマンスの観点からも非常に難しいです。

しかしビッグデータを扱うことに特化したデータベースを使うことによって、膨大なデータの中から必要なデータを瞬時に取り出すことが出来ますが、これまで慣れ親しんできた SQL が使えなかったりと、とても操作が面倒です。

そのような面倒な処理は、 Talend Open Studio for Big Data を使えばとても簡単にデータを取得して加工したりすることが出来ます。このような処理を行うツールは、一般的に ETL ツールと呼ばれています。よほど難しい処理をしようとしない限り、プログラムを書いたりする必要もありません。

Talend Open Studio for Big Data には無料版と有償版がありますが、この記事では無料版を使います。無料版でも特に制限なく利用できますので、ダウンロードしてみましょう。




今回作成する Talend のジョブ

今回は Talend Open Studio for Big Data を使って、DynamoDB からデータを取得し、そのデータをグループ化して集計する方法を説明します。今回作成する Talend のジョブは次のようになります。

大半のビッグデータ対応データベース (NoSQL) では、データをグループ化する GROUP BY 等の処理を実行することが出来ません。このような処理を実行できないようにすることで、非常に良いパフォーマンスと耐障害性を備えたものとなっています。しかし Talend Big Data を使うことによって、容易に NoSQL データベースのデータを集計することが可能です。

Amazon DynamoDB にテーブルとデータを用意する

DynamoDB には、あらかじめ以下のような test テーブルを DynamoDB に作成してデータも投入しておきます。

$ dql -r ap-northeast-1

ap-northeast-1> scan * from test ;
--------------------------
| order_id |  uuid | qty |
--------------------------
| 100      | '2'   | 8   |
| 200      | '1'   | 21  |
| 300      | '5'   | 3   |
| 200      | '4'   | 7   |
| 100      | '200' | 3   |
| 100      | '100' | 24  |
| 100      | '3'   | 2   |
--------------------------

このデータを DynamoDB から取得し、order_id 毎に行をグループ化(集約)して数量(qty)の合計値を求めるジョブを作成します。

処理を実行するための部品を配置する

Talend Big Data には DynamoDB に接続してデータを取得してくれる部品(コンポーネント)があります。tDynamoDBInput という部品を配置します (tDynamoDBInput_1)。

また DynamoDB のデータをグループ化(集約)するために、tAggregateRow という部品も配置します (tAggregateRow_1)。

そして最後に集計したデータを画面に出力するために tLogRow という部品を配置し、それぞれの部品を以下のようにつなぎます。

DynamoDB からデータを取得する設定

それでは tDynamoDBInput_1 の設定をして DynamoDB からデータを取得するようにしましょう。tDynamoDBInput_1 の設定は次のようになります。

次に "Edit schema" というボタンを押して各テーブルの列と同じ情報を追加します。また qty の数値を足し算しますので "qty" の "Db Column" の "Type" を "Integer" にしましょう (下図)。


DynamoDB のデータをグループ化(集約)する

次に DynamoDB から取得したデータをグループ化するために、tAggregateRow という部品の設定を行います。今回は order_id 毎にグループ化しますので、下図のように "Group by" の部分に order_id を設定します。

また order_id 毎にグループ化したら、数量(qty)の合計値を求めますので、"Operations" 部分に qty 列を選択して "Function" 部分には合計値を求める関数である "sum" を選択します (下図)。
このように設定することで、order_id 毎にデータをグループ化し、かつ数量(qty)の値の合計値を自動的に算出してくれます。

また上図の "Edit schema" ボタンを押して、下の図のように列定義を変更します。グループ化することによって列定義が異なってきますので、下図の左側は DynamoDB からの入力値、そして下図の右側がグループ化後の出力内容となっています。

下図の右側の定義は、最終的に order_id 毎にグループ化された数量(qty)の合計値を出力するために、下図のような定義としています。

グループ化後の結果を画面に出力する

tAggregateRow でグループ化した結果を画面に表示するために、tLogRow のスキーマ定義設定("Edit schema" ボタンで設定)が次のようになっていることを確認します。

ジョブを実行する

ここまででジョブが完成しましたので、早速実行してみます。以下の図のように order_id 毎にグループ化され、order_id 毎の qty 列の値の合計値が出力されていることが確認できます。

まとめ

ここまで見てきた通り、Talend Open Studio for Big Data を使うことにより NoSQL データベースのデータを非常に簡単かつ少ない作業量で集計することが出来ました。もし DynamoDB ではなく他の NoSQL を使っていたとしても、ほぼ同様の処理を実行できます。