Cloud
ログ
ビッグデータ
SBクラウド
AlibabaCloud
More than 1 year has passed since last update.


はじめに

前回の記事では Python スクリプトから直接 Log Service にログを投入する方法を紹介させていただきました。Log Service は直近のログ分析を行うには良いサービスですが、一定期間で保持されたログを削除するため、長期的なデータ分析を行うためには向いておりません。OSS にログを移す機能がありますが、実際にログ分析として活用するにはさらに RDS など別のサービスへのインポートが必要となります。

そこで、今回は DataWorks を利用して OSS から ApsaraDB for RDS(MySQL) へデータをインポートする方法を紹介いたします。


DataWorks とは?


DataWorks は、Alibaba Cloud によってリリースされた大きなデータPaaSプラットフォームです。ワンストップの DW 機能プラットフォームとして、データ統合、データ開発、データ管理、データガバナンスなど、幅広い製品とサービスを提供しています。


data1.png

上記、公式より引用したものです。OSS から RDS,RDS から OSS などデータを移行したり、データ加工(ETL処理)などが行えるサービスというイメージですかね。


事前準備



  • Log Service へのログ投入


    • 詳細は前回作成したこの記事を参考にしてください。

    • ログ転送周りについては前回同様こちらの記事を合わせて参考にしてください。




  • ApsaraDB for RDS(MySQL) 初期設定


    • こちらの記事がわかりやすいです。




やってみる


Log Service から OSS への転送

前回、以下の様な形式でログを保存している状態でした。

log1.png

上記のログを OSS LogShipper を使用し OSS に転送します。設定内容のサンプルは以下です。

data0.png

ポイントとしては CSV キーがそのままテーブルのキーとなるため、ログ生成の時点でそれなりの設計を行う必要があります。また、デリミタはデフォルトでは "," となっていますが、タブに変更しています。ユーザ入力が含まれるパターンでは "," が含まれる事が多く、排除もしにくいためです。コストを考えれば圧縮すべき等ありますが、詳細はケースに合わせ変更しましょう。

以下のようなファイルが OSS 内に出力されました。

data3.png


ApsaraDB for RDS(MySQL) の起動と DB, Table 等の準備

OSS ファイルのインポート先として DB, テーブルを準備します。今回は以下 DB, Table, カラム構成としています。

data4.png


DataWorks 初期設定

サービスを有効化していない場合は有効化しましょう。続いてアクセスキーの作成を求められます(最初はメインアカウントで作成する必要があるかもしれません)。

data14.png

アクセスキーを作成すると以下の様な画面に変わります。今回は Data Integration の機能を利用したいので、赤枠の Go Buy をクリックします。

data15-1.png

利用対象のリージョンを選択し、購入します。

data16.png

Data Integration 左のチェックボックスにチェックを付けた上で次へ進みます。

data18.png

必要項目に適当に入力した上で Create Project をクリックします。私の場合、何故か1回目はアクセスキーが存在しないとのエラーが出力され失敗しました...。少し時間を置いてからもう一度クリックしたところ成功しています。

data19.png

で、Project の作成が完了。


DataWorks Source 設定

続いて、DataWorks の Source 設定を行います。


Sourceとは?

DataWorks では各サービス間へデータ移行を行う機能がありますが、事前に対象サービスに接続するための設定を Source と呼んでいます。

先程、作成したプロジェクトをクリックすると以下のような画面になります。続いて、画面上部の Data Integration をクリックしましょう。

data21.png

遷移した画面で左ペインの Data Source という項目をクリック。

data22.png

画面右上の New Source をクリックし、Source 設定が行えます。

data23.png


OSS Source 設定

色々設定可能なデータソースが表示されますが、まず OSS を選択します。入力項目は以下を参考にしてください。

項目名

Name
適当な一意となる名前をつけてください。

Description
説明文です。必須ではありません。

Endpoint
OSS の Endpoint です。こちらを参照ください。 https もサポートしているとありますが、http で入力しないとエラーになりました。東京リージョンであれば http://oss-ap-northeast-1.aliyuncs.com と入力してください。

Bucket
転送元となる CSV ファイルがある Bucket を指定してください。

Access Id
DataWorks が OSS アクセスに利用するアクセスキーを必要な権限を付与した上で指定してください。

Access Key
上記と同様。


ApsaraDB for RDS(MySQL) Source 設定

続いて RDS。以下、説明を参考にしてください。

項目名

Type
今回は ali cloud database (rds) を指定します。

Name
適当な一意となる名前をつけてください。

Description
説明文です。必須ではありません。

Instance ID of RDS
RDS のインスタンス ID を指定します。

Main Buyer of RDS
メインアカウントの ID です。何で必要なんだろうか?

Database Name
インポート先の DB 名です。

Username
インポート先の DB のユーザ名です。

Password
インポート先の DB のパスワードです。

RDS を利用する場合は事前に DataWorks が利用する IP レンジをホワイトリストに入れておく必要があります。対象の IP はこちらを参照ください(中国語のドキュメントにしか記載がない様子?)。


DataWorks Sync Tasks 作成と実行 

画面左ペインの Sync Tasks をクリックします。

data26.png

Wizard Mode で OSS から RDS へデータをインポートするタスクを作成しましょう。

data27.png

まず、データソースとして OSS を選択。各項目を入力していきます。デリミタはタブ(\t)に変更しています。各項目入力後、data preview でインポートするデータのプレビューが閲覧可能です。

data29.png

続いてデータの投入先となる RDS と Table を指定。事前に準備が済んで入ればプルダウンから選択するだけで完了です。

data30.png

続いて、csv のカラムと table のキーのマッピングを行います。csv の方がわかりにくいですが、プレビューの順番通りになるので Col1 が "source",Col2 が "topic", Col3 が "message" です。

data31.png

次はジョブを実行するリソースの設定。とりあえずそのままで進めます。

data32.png

で、今回設定した同期タスクの命名。適当に付けて OK をクリックします。

data33.png

すると、画面左ペインに今回作成したタスクが表示されるので、選択した上で "Run" をクリックします。

data34.png

画面下部の log 部分にメッセージがずらずらと並びますが、処理が終わるとストップします。

data35.png

今回用意したテーブルを確認したところ、ちゃんとデータが投入されていることが確認できました。

data36.png

以上、簡単ではありますが、DataWorks による Data Integration の実行方法の紹介になります。


おわりに

今回は DataWorks の機能の一つである Data Integration について紹介しました。ビッグデータなど大規模なログ分析を行う上では必須となるサービスです。Alibaba Cloud には他にもログを活用する上で便利なサービスが色々あります。機会があればまた紹介させていただこうと思います。

ここまで読んでいただきありがとうございました。