MaxCompute では、ETL ツールの Kettle を使用してジョブをスケジュールできます。ドラッグアンドドロップインターフェイスを使用してデータ処理ワークフローを定義し、JDBC ドライバーを介して MaxCompute プロジェクトに接続できます。
背景情報
Kettle は、Java で記述されたオープンソースの ETL ツールです。Windows、UNIX、Linux で動作し、データパイプラインを構築するための GUI を提供します。Kettle は、Oracle、MySQL、DB2 などのデータベースや、HDFS、HBase、Cassandra、MongoDB などのビッグデータシステムを含む、幅広いデータソースをサポートしています。
Kettle でジョブを作成して MaxCompute プロジェクトに接続し、そのジョブを ETL ワークフローの一部としてスケジュールできます。
前提条件
開始する前に、次のものが揃っていることを確認してください。
-
MaxCompute プロジェクトが作成されました。
詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
-
MaxCompute プロジェクトにアクセスする権限を持つ AccessKey ID と AccessKey Secret を取得していること。
AccessKey 管理ページに移動して、認証情報を取得できます。
-
MaxCompute JDBC ドライバー (v3.2.8 以降) をダウンロードしていること。ファイル名に
jar-with-dependenciesが含まれる、すべての依存関係を含むパッケージをダウンロードしてください。このトピックでは、MaxCompute JDBC ドライバーの v3.2.9 を例として使用します。
-
Kettle インストールパッケージをダウンロードし、ローカルディレクトリに展開していること。
このトピックでは、Kettle 8.2.0.0-342 を例として使用します。
操作手順
-
ステップ 1:MaxCompute JDBC ドライバーの配置
MaxCompute JDBC ドライバーを Kettle のドライバーディレクトリに配置します。
-
Kettle を MaxCompute プロジェクトに接続します。
-
Spoon インターフェイスでジョブスケジューリングワークフローを作成します。
-
ジョブスケジューリングワークフローを実行します。
-
ジョブの結果を表示します。
ステップ 1:MaxCompute JDBC ドライバーの配置
MaxCompute JDBC ドライバーの JAR ファイル (例:odps-jdbc-3.2.9-jar-with-dependencies.jar) を、Kettle インストール先の data-integration/lib ディレクトリに配置します。
ステップ 2:MaxCompute プロジェクトへの接続
-
Kettle インストール先の
data-integrationディレクトリで、Spoon.bat(Windows の場合) またはSpoon(macOS の場合) をダブルクリックして Spoon を起動します。 -
上部のメニューバーから [ファイル] > [新規] > ジョブ を選択し、ジョブスケジューリングワークフロー用の Kettle ジョブを作成します。
-
[表示] タブのナビゲーションツリーで [データベース接続] を右クリックし、新規作成 を選択します。
-
[データベース接続] ダイアログボックスの [一般] タブで、次の表に従ってパラメーターを設定します。
パラメーター
説明
接続名
データベース接続のカスタム名です。 例:MaxCompute。
接続タイプ
[汎用データベース] を選択します。
接続方式
[ネイティブ (JDBC)] を選択します。
ダイアレクト
[Hadoop Hive 2] を選択します。
カスタム接続 URL
MaxCompute プロジェクトの接続 URL です。 フォーマットは
jdbc:odps:<maxcompute_endpoint>?project=<MaxCompute_project_name>です。 URL を設定する際は、<>記号を削除してください。 パラメーター:-
<MaxCompute_endpoint>:必須。 MaxCompute プロジェクトが配置されているリージョンのエンドポイントです。
エンドポイントのリストについては、「エンドポイント」をご参照ください。
-
<MaxCompute_project_name>:必須。 ターゲットの MaxCompute プロジェクトの名前です。
これは、ご利用の MaxCompute プロジェクトの名前であり、ワークスペースの名前ではありません。 MaxCompute コンソールにログインし、左上隅でリージョンを切り替え、プロジェクト管理 ページでプロジェクト名を確認できます。
カスタムドライバークラス名
JDBC ドライバークラスです。 これを com.aliyun.odps.jdbc.OdpsDriver に設定します。
ユーザー名
MaxCompute プロジェクトの AccessKey ID です。
AccessKey 管理ページに移動して、AccessKey ID を取得できます。
パスワード
ご利用の AccessKey Secret です。
-
-
テスト をクリックします。接続に成功したら、確認ダイアログボックスで OK をクリックします。次に、OK ダイアログボックスで OK をクリックして接続を保存します。
ステップ 3:スケジューリングワークフローの作成
Spoon の [デザイン] タブで、コアオブジェクトを作成してリンクすることにより、ジョブスケジューリングワークフローを構築します。
次の例では、LOAD コマンドを使用して OSS から MaxCompute 内部テーブルにデータをロードする ETL プロセスを説明します。サンプルデータについては、「LOAD」をご参照ください。このプロセスのジョブは、コアオブジェクトタイプごとに次のように分類されます。

-
Spoon インターフェイスで、[デザイン] タブをクリックします。
-
前述のオブジェクト分類に基づき、左側のナビゲーションウィンドウから右側のジョブキャンバスにコアオブジェクトをドラッグします。次の構造でコアオブジェクトを接続します。
コアオブジェクトを接続するには、ソースオブジェクトを選択し、Shift キーを押しながら宛先オブジェクトをクリックして接続ホップを作成します。
左側のパネルで [コアオブジェクト] タブを選択し、[一般] やその他のカテゴリを展開してコンポーネントを取得します。接続構造は次のとおりです:[開始] → [テーブルの作成] → [OSS からのロード] → [処理] → [成功] (成功パス)。また、エラー処理のために [テーブルの作成]、[OSS からのロード]、[処理] から [ジョブの中止] ノードへの失敗パスも設定します。
-
スクリプトベースのコアオブジェクトを右クリックし、[ジョブエントリーの編集] を選択します。 SQL ダイアログボックスで、次の表に記載されているパラメーターを設定し、OK をクリックします。 このプロセスを繰り返して、すべてのスクリプトベースのコアオブジェクトを設定します。
パラメーター
説明
ジョブエントリー名
ジョブエントリーの名前。例:テーブルの作成、OSS からのロード、または処理。
接続
使用するデータベース接続の名前。これはステップ 2で作成したデータベース接続です。例:MaxCompute。
SQL を単一のステートメントとして送信
このオプションの選択を解除します。
SQL スクリプト
ジョブエントリーの SQL スクリプト。この例のスクリプトベースのコアオブジェクトの SQL スクリプトは次のとおりです。
-
テーブルの作成
CREATE TABLE ambulance_data_csv_load ( vehicleId INT, recordId INT, patientId INT, calls INT, locationLatitute DOUBLE, locationLongtitue DOUBLE, recordTime STRING, direction STRING); -
OSS からのロード
LOAD OVERWRITE TABLE ambulance_data_csv_load FROM LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-test/data_location/' STORED BY 'com.aliyun.odps.CsvStorageHandler' WITH serdeproperties ( 'odps.properties.rolearn'='acs:ram::xxxxx:role/aliyunodpsdefaultrole', -- AliyunODPSDefaultRole の ARN。RAM コンソールから取得できます。 'odps.text.option.delimiter'=',' ); -
処理
INSERT OVERWRITE TABLE ambulance_data_csv SELECT * FROM ambulance_data_csv_load;
-
ステップ 4:スケジューリングワークフローの実行
-
ジョブスケジューリングワークフローのインターフェイスで、左上隅にある実行アイコン
をクリックします。[実行オプション] ダイアログボックスで、[実行] をクリックします。ダイアログで、[実行設定] を [Pentaho ローカル] に、[ログレベル] を [基本ロギング] に設定し、[実行前にログをクリア] はデフォルトでチェックされたままにし、その他のオプションはデフォルトのままにします。
-
任意:ジョブの保存を求められた場合は、有効 をクリックし、ジョブスケジューリングワークフローに名前を付けます (例:mc)。
-
ワークフローインターフェイスの DAG 図または [実行結果] セクションで実行ステータスを監視します。各オブジェクトに緑色のチェックマークが表示されると、ジョブスケジューリングワークフローは完了です。
ジョブスケジューリングフローが終了すると、DAG には [テーブルの作成]、[OSS からのロード]、[処理]、[成功] の各ノードに緑色のチェックマークが表示されます。[実行結果] エリアには、各ジョブエントリーの結果が true として表示され、最終的な出力は [ジョブは終了しました] となります。
ステップ 5:ジョブ結果の表示
ジョブスケジューリングワークフローが完了したら、SQL クエリを実行して、データが期待どおりに宛先テーブルに書き込まれたことを確認します。
-
Spoon インターフェイスで、[表示] タブをクリックします。作成した Kettle ジョブ (例:mc) の下で、[データベース接続] を展開します。
-
作成したデータベース接続 (例:MaxCompute) を右クリックし、[SQL エディター] を選択します。
-
[シンプル SQL エディター] ダイアログボックスで SQL クエリを入力し、[実行] をクリックします。結果は [プレビューデータの確認] ダイアログボックスに表示されます。
SQL クエリは次のとおりです。
SELECT * FROM ambulance_data_csv;