MaxCompute連載5:MaxComputeを支えるツール・TunnelとIntelliJ IDEAについて

Hi, データエンジニアの大原です。
Alibaba Cloudのデータ処理プラットフォーム「MaxCompute」についての連載記事の5回目です。

今回はMaxComputeを支えるツール・TunnelおよびIntelliJ IDEAについてを説明します。

前回の記事はこちらをご覧ください。 www.sbcloud.co.jp

f:id:sbc_ohara:20210104091159p:plain

前書き

MaxComputeの概要をこのblogにて記載しました。

MaxCompute (旧プロダクト名 ODPS) は、大規模データウェアハウジングのためのフルマネージドかつマルチテナント形式のデータ処理プラットフォームです。さまざまなデータインポートソリューションと分散計算モデルにより、大規模データの効率的な照会、運用コストの削減、データセキュリティを実現します。

f:id:sbc_ohara:20210104133726p:plain

少し前になりますが、MaxComputeについての資料をSlideShareへアップロードしていますので、こちらも参考になればと思います。

www.slideshare.net

今回はAlibaba Cloud MaxComputeを支えるツール・TunnelおよびIntelliJ IDEAについてを紹介します。

Tunnelについて

TunnelはMaxCompute(odps)クライアントコマンドツールです。これを使用してコマンドベースで操作することができます。

f:id:sbc_ohara:20210311144718p:plain

www.alibabacloud.com

Tunnelのインストール・セットアップ

以下、ソースコードから、ツールをダウンロードし実行します。
注意として、クライアント側はJava 8以降が必要です。

github.com

f:id:sbc_ohara:20210311144200p:plain

あとはterminalにて、bin/odpscmdを起動します。
以下はwindowsの例ですが、Macでも同様に操作できます。

f:id:sbc_ohara:20210311202419p:plain

続いて、confフォルダのodps_config.iniファイルを編集しながらクライアント情報を設定します。 f:id:sbc_ohara:20210311202905p:plain

AK(access_id/access_key)、project_name、endpointは必須入力欄なので記載します。
endpointはここから確認できます。日本リージョンなので、http://service.ap-northeast-1.maxcompute.aliyun.com/apiを選択します。
f:id:sbc_ohara:20210311203845p:plain

www.alibabacloud.com

再度、bin/odpscmdを起動すると、MaxComputeのProjectに入り、操作することが出来ます。 f:id:sbc_ohara:20210311204041p:plain

Tunnelのコマンドはこちらhelpが詳しいですので、参考にいただければ幸いです。

www.alibabacloud.com

Tunnelの具体的な使い方

Tunnelを使ったCSVファイルのアップロード
・ユーザーの権限やロールの確認
・プロジェクトの権限やセキュリティ確認
・SQL操作

などが挙げられます。そこは用途に応じて確認できれば幸いです。

www.alibabacloud.com


IntelliJ IDEAについて

IntelliJ IDEAはJetBrains社製のJava系向けIDE(統合開発環境)です。Javaの開発環境としても人気があるツールです。
ここにMaxCompute(odps)のプラグインがあり、 IntelliJ IDEAからMaxComputeを操作することができます。

IntelliJ IDEAのインストール・セットアップ

IntelliJ IDEAの操作についてはネットにて色々出回ってるので、ここでは割愛します。
もちろん、IntelliJ IDEA Community Edition(無料版) でも問題ございません。

www.alibabacloud.com

IntelliJ IDEAの具体的な使い方

IntelliJ IDEAでMaxCompute Studioを使った簡単なdemoとして、CSVファイルの特定列をJavaコードでカスタマイズしてみます。
次のような出力がゴールとなります。

f:id:sbc_ohara:20210311210940p:plain

IntelliJ IDEA にて、「File」 > 「設定」 > 「プラグイン」 でMaxCompute Stdioをインストールします。

f:id:sbc_ohara:20210311205510p:plain

「File」>「New」>「Project」>「MaxCompute Studio」でMaxComputeプロジェクトを作成します。

f:id:sbc_ohara:20210311205702p:plain

「File」 > 「New」 > 「Module」 > 「MaxCompute Java」 でMaxComputeモジュールを作成します。

f:id:sbc_ohara:20210311205810p:plain

src/main/java:JavaはJavaプログラム開発用のソースコードです。
examples はユニットテスト (UT) の例を含むサンプルコード。UTの開発やコンパイルの例を見ることができます。
warehouse はローカルでの実行に必要なスキーマとデータ。

f:id:sbc_ohara:20210311205900p:plain

AlibabaCloudは、gitプロジェクトのアドレスで事前定義されたエクストラクタのソースコードを以下のように提供しています。
https://github.com/aliyun/aliyun-odps-java-sdk/tree/master/odps-sdk-impl/odps-udf-example/src/main/java/com/aliyun/odps/udf/example/text
新しく作成したモジュールにすべてのJavaファイルを配置し、要件に基づいてTextExtractor.javaのロジックを更新します。

github.com

f:id:sbc_ohara:20210311210006p:plain

TextExtractor.javaファイルのtextLineToRecord関数は、データファイルのテキスト行からデータを取り出す方法を定義します。
要件に基づいて関連する関数を更新します。このデモの場合、関数はデータのロード中にcustom_idをフォーマットします。

f:id:sbc_ohara:20210311210113p:plain

コードの更新後、mvnコマンドを使用してターゲットパッケージを構築します。
モジュールフォルダに移動し、mvn packageを実行します。

f:id:sbc_ohara:20210311210212p:plain

今度はDataWorks DataStdioの Resource画面に遷移します。
上記の手順でビルドされたパッケージ [CustomizedExtractor-1.0-SNAPSHOT.jar] をアップロードします。

f:id:sbc_ohara:20210311212500p:plain

Resource画面で、 [CustomizedExtractor-1.0-SNAPSHOT.jar] を適用するようにします。

f:id:sbc_ohara:20210311212356p:plain

準備ができたら、Create Tableモーダルにてテーブルを作成します。
f:id:sbc_ohara:20210311210443p:plain

ファイル形式をカスタムファイル形式として選択し、カスタマイズされたハンドラに基づいてリソースとクラスを設定します。

f:id:sbc_ohara:20210311210609p:plain

Tableをコミットします。

f:id:sbc_ohara:20210311210654p:plain

結果、OSSにあったCSVファイルのデータを変換し表示するようになりました。

f:id:sbc_ohara:20210311210828p:plain


最後に

MaxComputeを支えるツール・TunnelおよびIntelliJ IDEAについてを説明しました。TunnelおよびIntelliJ IDEAを使うことで、様々な開発環境として運用することができます。
DataWorksらGUI操作だけでは物足りない場合、このツールを使うことで解決することもできますので、ご参考にいただければ幸いです。

最後までお読みいただきありがとうございました。

MaxCompute連載シリーズ

www.sbcloud.co.jp www.sbcloud.co.jp www.sbcloud.co.jp www.sbcloud.co.jp www.sbcloud.co.jp