はじめに
前回「Pentaho Data IntegrationでAzure SQL Databaseと連携する」に引き続き、Pentaho Data Integration(以降PDIと略す) となりますが、今回はAzure Data Lake Store との連携を試してみます。
Azure Data Lake Store の連携は、JDBCドライバが提供されていないため、Azure CLIで試してみます。
Azure Data Lake Store とは
実質無制限の容量のファイル群を格納出来るビッグデータストアで、全てのファイルをそのままの書式(raw data)で格納可能です。
Azure Data Lake Store へは、新しいファイルシステムである AzureDataLakeFilesystem (adl://) 経由でアクセスすることを推奨しています。
AzureDataLakeFilesystem は、WebHDFS で現在まだサポートされていない、より有効なパフォーマンスの最適化を利用できるようになります。
また、WebHDFS と互換性のある REST インターフェイスを公開しているため、WebHDFS API を使用する既存の HDInsight アプリケーションまたはサービス は、Data Lake Store と容易に統合することができます。
PDIにて、前回と同様に、データのインポートのETL処理を定義します。
前提動作環境
動作環境は下記になります。
- Azure Data Lake Store ※事前に作成しておきます。
- フォルダー:inputs(ルート直下に作成)
- Azure アプリIDの作成 ※事前に作成しておきます
- Azure上の仮想マシン(OSはWindows Server 2012 R2) ※事前に作成しておきます
- jdk-8u152-windows-x64.exe ※事前にインストールしておきます
- Pentaho Data Integration 7.1 ※事前にインストールしておきます
- Azure CLI 2.0 ※事前にインストールしておきます
- 非対話型ログインのサービスプリンシパルによるログイン
- サービスプリンシパルで「az login」コマンドの実行 ※事前に実施しておきます(更新トークンの有効期間(既定値14日)を超えたら再認証が必要)
- 非対話型ログインのサービスプリンシパルによるログイン
PDIでのETL処理定義
メニューから「ファイル」-> 「新規」-> 「ジョブ」をクリックして、新しくジョブを作成します。
下図の処理フローを作成していきます。
以下で、各設定方法を説明していきます。
ジョブのスタート
画面左のデザインタブから「全般」->「スタート」を右側のキャンバスに、ドラッグ&ドロップで配置し、ダブルクリックします。
CSVファイルのアップロード
インポート対象のデータとして、前回と同じ以下のUTF8のCSV形式のファイル(ヘッダー付)を用意します。
time,name,age
2016/04/01 00:00:00,サイオス太郎,20
2017/05/31 00:00:00,ビッグデータ太郎,22
画面左のデザインタブから「スクリプト」->「シェル」を右側のキャンバスに、ドラッグ&ドロップで配置し、ダブルクリックします。
「シェル」の設定
「全般」タブ
「スクリプト」タブ
「スタート」と「シェル」の結合
「スタート」アイコンから「シェル」アイコンへと、Shiftキーを押しながらドラッグして矢印で結びます。
ジョブの実行
全ての設定が完了した後、ジョブの実行をします。ジョブの実行は、メニューから「アクション」->「実行」をクリックで、実行します。
Azureのポータル画面で、CSVファイルがアップロードされたか確認してみます。
下図のとおり、CSVが指定のフォルダーにアップロードされています。
さらに、アップロードしたCSVファイルをクリックし、プレビュー画面でデータも確認してみます。
下図のとおり、用意したCSVファイルと同じデータになっています。
ここまでの手順で作成してきた「ジョブ」を「Spoon」上ではなく、バッチ実行するには、「C:\Pentaho\data-integration」配下にある「Kitchen.bat」を使用します。
以下のように「Kitchen.bat」の引数に、「ジョブ」をファイル保存して作成された拡張子「kjb」のファイルを指定して実行します。
Kitchen.bat /file:${拡張子「kjb」のファイルのフルパス} /level:Basic
まとめ
以上のように、前回のAzure SQL Database と同じように、Azure Data Lake Store も簡単にデータ連携ができます。Azure Data Lake Store は、DBと異なり、形式・サイズも気にせずデータを置くことができます。
さらに、WebHDFS 互換のREST APIを持っているため、Data Lake AnalyticsやHDinsght 以外のHortonworks, Cloudera、MAPR などとも柔軟に構築できるので、非常に有用ではないかと思っています。