Pentaho Data Integration から MariaDB ColumnStore へバルクデータロード
MariaDB の BI(Business Intelligence)/データ分析/DWH(Data Warehouse)用列指向データベース,MariaDB ColumnStore は現時点では Linux しかサポートしていません。
しかしながら多くの企業において,Linux デスクトップが利用されていることはほとんどなく,Windows クライアントから ColumnStore サーバに SSH ログインし,cpimport によるデータインポートには煩雑さが伴います。
ColumnStore 1.2 では新たに Windows 版 PDI(Pentaho Data Integration)用 MariaDB ColumnStore bulk loader plugin が追加され,Windows 上で PDI を利用する場合,GUI で簡単にデータインポート,ETL等の作業を行うことが可能となりました。
今回はその利用法に関して解説致します。
実行環境
クライアント
- Microsoft Windows 10 Pro 1803
- Pentaho Data Integration(PDI) Community Edition(CE) 8.2.0.0-342
- Java 1.8.0_201
- MariaDB Connector/J 2.4.1
ColumnStore サーバ
- CentOS 7.6.1810
- MariaDB ColumnStore 1.2.3 single(UM+PM combined) node 構成
PDI CE のインストール
PDI CE は SourceForge 上で公開されており,以下からダウンロード可能です。
https://sourceforge.net/projects/pentaho/files/Pentaho%208.2/client-tools/
ダウンロード後,適当なフォルダに展開します。今回は C:\pdice8.2 に展開します。
なお,Pentaho Enterprise Edition でも MariaDB ColumnStore bulk loader plugin は利用可能です。
MariaDB ColumnStore PDI プラグインのインストール
mariadb-columnstore-kettle-bulk-exporter-plugin-1.2.3-1-x64-win.zip をダウンロード,PDI CE 8.2 plugin フォルダ(今回はC:\pdice8.2\data-integration\plugins)に展開します。
MariaDB Connector/J のインストール
執筆時点での最新版,mariadb-java-client-2.4.1.jar をダウンロード,PDI CE 8.2 lib フォルダ(C:\pdice8.2\data-integration\lib)にコピーします。
Columnstore.xml のコピー
ColumnStoreサーバの /usr/local/mariadb/columnstore/etc/Columnstore.xml をSFTP等でクライアントWindows PCにコピーします。Columnstore.xml 内でIPアドレスが 127.0.0.1 になっている場合,Windows PCからアクセス可能となるよう,IPアドレスを一括置換します。
修正前:
<IPAddr>127.0.0.1</IPAddr>
修正後(例):
<IPAddr>192.168.2.12</IPAddr>
CSV File Input ステップの設定
今回は GitHub で公開されている ColumnStore 用サンプルデータの opps(opportunities) を用います。
CSV データは mock_opp_data.csv になりますが,事前に ColumnStore サーバ上で create_opps_tab.sh を実行し,テーブルを作成しておきます。
PDI 上で File – New – Transformation で新規の Transformation を作成し,Canvas に CSV FIle Input を drag & drop します。
CSV ファイルの選択,File encoding の選択等を行います。
CSVファイルからインポートを行う場合,先頭行(Header row)に各フィールド名を含めることで,各フィールドのマッピングを半自動的に行うことができます。その場合は Header row present ? をチェックします。
MariaDB ColumnStore bulk loaderステップの設定
左ペイン(Designタブ)から MariaDB ColumnStore Bulk Loaderステップを Canvas に drag & dropし,CSV File Input ステップと接続します。
Target database, table 等を指定,下部の Settings タブで Columnstore.xml を選択,デーテベース接続設定を行います。
データベース接続設定
事前に以下のようにColumnStoreサーバ上で接続ユーザを作成しておきます。
GRANT ALL ON *.* to pentaho@’%’ IDENTIFIED BY ‘password’;
FLUSH PRIVILEGES;
接続設定ウインドウで以下の項目を設定します。
- 接続タイプ: MariaDB(JDBC)
- ホスト名/IPアドレス
- インポート先データベース名
- 待受Port番号(デフォルト: 3306)
- ユーザ名
- パスワード
CSV – ColumnStore テーブル間の Field マッピング
MariaDB ColumnStore Bulk Loaderステップの Filed mapping タブを選択すると,CSV データと ColumnStore テーブル間のfield(カラム)のマッピングの確認,修正を行うことができます。
CSVファイルからのインポートを行う場合,先頭行(Header row)に各フィールド名を含めることで,各フィールドのマッピングを半自動的に行うことができます。
ColumnStore へ bulk load
Canvas 左上にある Run ボタンをクリックすることで CSV ファイルからのバルクロードを開始することができます。ロード開始後,Canvas 下部に Execution Results ペインが表示されますので,Logging タブに以下のようなログが記録され,最後に Spoon – The transformation has finished!! と表示されていれば正常にインポートが完了したことが確認できます。
2019/04/05 12:20:02 - Spoon - Using legacy execution engine 2019/04/05 12:20:02 - Spoon - Transformation opened. 2019/04/05 12:20:02 - Spoon - Launching transformation [test-bulk-load-123]... 2019/04/05 12:20:02 - Spoon - Started the transformation execution. 2019/04/05 12:20:02 - test-bulk-load-123 - Dispatching started for transformation [test-bulk-load-123] 2019/04/05 12:20:02 - CSV file input.0 - Header row skipped in file 'C:\pdice8.2\mariadb-columnstore-samples\opps\mock_opp_data.csv' 2019/04/05 12:20:02 - CSV file input.0 - Finished processing (I=1001, O=0, R=0, W=1000, U=0, E=0) 2019/04/05 12:20:02 - MariaDB ColumnStore Bulk Loader.0 - mcsapi version: 1.2.3-3d1ab30 2019/04/05 12:20:02 - MariaDB ColumnStore Bulk Loader.0 - javamcsapi version: 1.2.3-3d1ab30 2019/04/05 12:20:03 - MariaDB ColumnStore Bulk Loader.0 - Finished processing (I=0, O=0, R=1000, W=1000, U=0, E=0) 2019/04/05 12:20:03 - Spoon - The transformation has finished!!
まとめ
今回は Windows 上で Pentaho Data Integration を利用し,リモート MariaDB ColumnStore サーバに CSV ファイルからバルクデータロードを行う手順について解説いたしました。
なお,2019年2月末開催の MariaDB Corporation ユーザ会議,OpenWorks 2019 にて Pentaho EE / Tableau 2019.1 と MariaDB ColumnStore との連携について講演しており,スライド(英語版)を以下のリンクより閲覧/ダウンロードいただけます。
Using Pentaho/Tableau with MariaDB ColumnStore @ OpenWorks 2019