MaxCompute クライアント (odpscmd) は、ローカルマシンからコマンドを実行し、プロジェクトを管理できるコマンドラインインターフェイス (CLI) です。本トピックでは、odpscmd のダウンロード、インストール、構成、および使用方法について説明します。
前提条件
-
MaxCompute クライアントには Java 8 以降が必要です。
-
バージョン互換性
-
MaxCompute クライアント v0.28.0 以降は JDK 1.9 以降をサポートしています。v0.28.0 より前のバージョンは JDK 1.8 のみをサポートしています。MaxCompute クライアントの起動後、コマンドラインインターフェイスでクライアントのバージョンを確認できます。
-
MaxCompute クライアントの出力フォーマットは下位互換性がありません。クライアントのバージョンによってコマンド形式や動作が異なる場合があります。クライアントの出力フォーマットを解析用途で使用しないでください。
-
その他のクライアントバージョンについては、aliyun-odps-console をご参照ください。
-
-
文字コード
クライアントはデフォルトで UTF-8 を使用します。ローカル環境の文字コードが UTF-8 でない場合、MaxCompute テーブルから中国語を含むデータをクエリしたり、Tunnel コマンドを使用して中国語を含むローカルファイルをアップロードしたりすると、文字化けが発生する可能性があります。
課金
MaxCompute クライアントを使用してプロジェクトに接続する操作は無料ですが、クライアント経由で実行される操作は MaxCompute の課金対象となります。たとえば、SQL クエリを送信すると計算リソースが消費され、データを書き込むとストレージ領域が使用されます。これにより、計算およびストレージコストが発生します。MaxCompute の課金に関する詳細については、「課金対象項目と課金方法」をご参照ください。
odpscmd のインストールと構成
odpscmd v0.27.0 以降は MaxCompute 2.0 のデータ型をサポートしています。これらのデータ型を使用することを推奨します。サポートされているデータ型の一覧については、「データ型 (V2.0)」をご参照ください。
操作手順
-
odpscmd インストールパッケージ (GitHub) をダウンロードします。
説明-
リリースページにアクセスし、最新バージョンの odpscmd インストールパッケージ (odpscmd_public.zip) をダウンロードします。
-
GitHub のリンクからパッケージをダウンロードできない場合は、odpscmd インストールパッケージ (OSS) をダウンロードしてください。GitHub へのアクセスに問題がある場合は、オンラインで解決策を検索することを推奨します。
-
-
ダウンロードしたパッケージを解凍します。展開されたディレクトリには、bin、conf、lib、および plugins フォルダが含まれています。
-
conf フォルダに移動し、odps_config.ini ファイルを構成します。
odps_config.ini ファイルでは、シャープ記号 (#) がコメントを示します。次の表にパラメーターを示します。
パラメーター
必須
説明
例
project_name
はい
送信先 MaxCompute プロジェクトの名前。
標準モードでワークスペースを作成した場合、project_name パラメーターを構成する際に、本番環境と開発環境 (_dev) のプロジェクト名を区別する必要があります。詳細については、「ワークスペースモードの違い」をご参照ください。
-
MaxCompute コンソール にログインし、左上隅でリージョンを選択します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
プロジェクト管理 ページで、MaxCompute プロジェクト名を確認します。
doc_test_dev
access_id
はい
Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。AccessKey ID は AccessKey 管理 ページから取得します。
N/A
access_key
はい
AccessKey ID に対応する AccessKey Secret。
N/A
end_point
はい
MaxCompute サービスのエンドポイント。
ご利用の MaxCompute プロジェクトが配置されているリージョンおよびネットワーク接続タイプに基づいてエンドポイントを構成する必要があります。リージョンおよびネットワークタイプ別のエンドポイントの一覧については、「エンドポイント」をご参照ください。
重要-
エンドポイントは MaxCompute サービスに接続し、トンネルエンドポイントは MaxCompute Tunnel サービスに接続します。ここでは MaxCompute サービスのエンドポイントを指定してください。
-
エンドポイントの構成が誤っていると、アクセスエラーが発生します。
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
いいえ
LogView URL。このパラメーターの構成を推奨します。構成しない場合、ジョブ失敗の原因を迅速に特定できなくなる可能性があります。
この URL を使用して、ジョブのランタイム情報を詳細に表示し、エラーをトラブルシューティングできます。固定値は http://logview.odps.aliyun.com です。
http://logview.odps.aliyun.com
https_check
いいえ
MaxCompute プロジェクトへのアクセスリクエストを HTTPS で暗号化するかどうかを指定します。有効な値:
-
True:HTTPS を有効にします。
-
False:HTTP を使用します。
デフォルト値は False です。
True
data_size_confirm
いいえ
入力データサイズの最大値 (単位:GB)。上限はありません。推奨値:100。
100
update_url
いいえ
このパラメーターは将来の使用のために予約されています。
N/A
use_instance_tunnel
いいえ
InstanceTunnel を使用して SQL 実行結果をダウンロードするかどうかを指定します。有効な値:
-
True:InstanceTunnel を使用して SQL 実行結果をダウンロードします。
-
False: InstanceTunnel を使用して SQL 実行結果をダウンロードしないでください。
デフォルト値は False です。
True
instance_tunnel_max_record
いいえ
SQL 実行結果の最大レコード数。use_instance_tunnel が True に設定されている場合、このパラメーターを構成する必要があります。最大値は 10,000 です。
10000
tunnel_endpoint
いいえ
Tunnel サービスのパブリックエンドポイント。
-
このパラメーターを構成しない場合、Tunnel は自動的に MaxCompute サービスのネットワークに対応するトンネルエンドポイントにリクエストをルーティングします。
-
トンネルエンドポイントを構成した場合、Tunnel はその値を使用し、自動ルーティングを行いません。
リージョンおよびネットワークタイプ別のトンネルエンドポイントの一覧については、「エンドポイント」をご参照ください。
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
いいえ
MaxCompute プロジェクトのプロパティを設定します。
プロパティの詳細については、「プロパティ一覧」をご参照ください。
set.odps.sql.decimal.odps2=true
上記の情報を正しく構成してください。構成ミスにより、プロジェクトへの接続が失敗する可能性があります。
-
MaxCompute クライアントの起動
-
MaxCompute プロジェクトの作成を行います。
-
RAM ユーザーとして MaxCompute クライアントを使用する場合は、Alibaba Cloud アカウントを使用して RAM ユーザーを対象の MaxCompute プロジェクトに追加します。ユーザーの追加方法の詳細については、「他のユーザーへの権限付与」をご参照ください。
-
次のいずれかの方法で MaxCompute クライアントを起動します。
スクリプトファイル
MaxCompute クライアントのインストールディレクトリにある bin ディレクトリで、Windows の場合は
odpscmd.batを、macOS の場合はodpscmdをダブルクリックして MaxCompute クライアントを起動します。次の出力が表示されると、MaxCompute プロジェクトへの接続が成功しています。odpscmd Aliyun ODPS Command Line Tool Version 0.4xxx @Copyright 2020 Alibaba Cloud Computing Co., Ltd. All rights reserved. Connecting to http://service.xxx.maxcompute.aliyun.com/api, project: xxx Executing predefined SET command: SET odps.sql.hive.compatible=true OK Endpoint: http://service.xxx.maxcompute.aliyun.com/api Project: xxx Schema: default Quota: default in region N/A Timezone: Asia/Shanghai Connected!コマンドラインウィンドウ
コマンドラインウィンドウで、MaxCompute クライアントのインストールディレクトリにある bin ディレクトリに移動します。Windows では
odpscmdを、Linux または macOS ではsh odpscmdを実行して MaxCompute クライアントを起動します。成功メッセージが表示されると、クライアントが MaxCompute プロジェクトに接続されています。説明Ubuntu では、
sh odpscmdを実行するとエラーが返されます。./odpscmdを代わりに使用してください。コマンドラインウィンドウから MaxCompute クライアントを起動する際、スタートアップパラメーターを指定してコマンドを実行できます。詳細については、「スタートアップパラメーター」をご参照ください。
MaxCompute クライアントの操作
コマンドヘルプ
次のいずれかの方法で MaxCompute クライアントコマンドのヘルプを取得できます。
MaxCompute クライアント内
-
すべてのコマンドのヘルプを表示します。
odps@project_name>help; -- 次のコマンドも同等です。 odps@project_name>h; -
特定のキーワードに関連するコマンドのヘルプを表示します。
たとえば、テーブル関連のコマンドのヘルプを取得するには、次のコマンドを実行します。
odps@project_name>help table; -- 次のような出力が返されます。 Usage: alter table <tablename> merge smallfiles Usage: export table <tablename> Usage: show tables [in <project_name>] [like '<prefix>'] list|ls tables [-p,-project <project_name>] Usage: describe|desc [<projectname>.]<tablename> [partition(<spec>)] Usage: read [<project_name>.]<table_name> [(<col_name>[,..])] [PARTITION (<partition_spec>)] [line_num]重要readコマンドは SQL 構文を使用し、SQL 課金の対象となります。
システム CLI から
システムのコマンドラインウィンドウで、MaxCompute クライアントのインストールディレクトリにある bin ディレクトリに移動します。その後、次のコマンドを実行してすべてのコマンドのヘルプを表示します。コマンドラインウィンドウから MaxCompute クライアントを起動する際に一連のパラメーターを指定できます。パラメーターの詳細については、「パラメーター」をご参照ください。
...\odpscmd\bin>odpscmd -h
現在のユーザー情報
次のコマンドを実行して現在のユーザー情報を取得します。
odps@project_name>whoami;
出力には次のフィールドが含まれます。
-
Name:現在のアカウント。
-
Source IP:MaxCompute クライアントを実行しているデバイスの IP アドレス。
-
End_Point:MaxCompute サービスのエンドポイント。
-
Project:プロジェクト名。
-
Schema:プロジェクト内のスキーマ。
MaxCompute クライアントの終了
次のコマンドを実行して MaxCompute クライアントを終了します。
odps@project_name>quit;
-- 次のコマンドも同等です。
odps@project_name>q;
tunnel download コマンド
-
tunnel downloadコマンドを初めて実行すると、MaxCompute クライアントはインストールディレクトリのplugins/dshipディレクトリにログ用のセッションフォルダを作成します。 -
複数のユーザーが同一デバイスで
tunnel downloadコマンドを実行する場合、次の方法でデータセキュリティを確保します。-
オペレーティングシステムの権限設定を使用して、セッションフォルダへのアクセスを制御します。
-
-sd <new_session_folder_name>または-session-dir <new_session_folder_name>パラメーターをtunnel downloadコマンドに追加して、別のセッションフォルダにデータをダウンロードします。tunnel downloadコマンドの詳細については、「ダウンロード」をご参照ください。
-
関連ドキュメント
MaxCompute クライアントにログイン後、MaxCompute プロジェクト内で SQL コマンドを実行できます。詳細については、「MaxCompute クライアントの使用」をご参照ください。
MaxCompute クライアントのコマンド構文の詳細については、「コマンドリファレンス」または「SQL コマンドと関数」をご参照ください。
よくある質問
odps_config.ini ファイルを構成して MaxCompute クライアントを起動した後、次の一般的なエラーが発生する場合があります。
エラー: no java found
-
原因
MaxCompute クライアントを実行しているマシンに Java がインストールされていません。
-
解決策
マシンに Java をインストールし、環境変数を構成します。MaxCompute クライアント v0.28.0 以降は JDK 1.9 以上をサポートしています。それより前のバージョンは JDK 1.8 のみをサポートしています。
エラー: Could not find or load main class com.aliyun.openservices.odps.console.ODPSConsole
-
原因
クライアントパッケージを 2 回ダウンロードしたため、ディレクトリ名が自動的に
odpscmd_public (1)に変更された可能性があります。スペースなどの特殊文字を含むディレクトリ名は、パス解決に失敗する原因になります。 -
解決策
ディレクトリ名からスペースやその他の特殊文字を削除してください。
エラー: Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
-
原因
odps_config.ini ファイルのプロジェクト名が誤っている可能性があります。
-
解決策
-
MaxCompute コンソール にログインし、左上隅でリージョンを選択します。
-
左側のナビゲーションウィンドウで、 を選択します。
-
プロジェクト管理 ページで、MaxCompute プロジェクトの正しい名前を確認し、odps_config.ini ファイルを修正します。
-
エラー: Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
-
原因
現在の AccessKey に関連付けられた Alibaba Cloud アカウントまたは RAM ユーザーが対象プロジェクトに追加されていないか、プロジェクト名が誤っています。
-
解決策
プロジェクトオーナーに連絡し、Alibaba Cloud アカウントまたは RAM ユーザーを対象プロジェクトに追加してもらってください。詳細については、「Alibaba Cloud アカウントユーザーの追加 (プロジェクトレベル)」または「RAM ユーザーの追加 (プロジェクトレベル)」をご参照ください。
エラー: Accessing project '<projectname>' failed: { "Code": "InvalidProjectTable", "Message": "The specified project or table name is not valid or missing."} または Accessing project '<projectname>' failed: connect timed out
-
原因
end_pointパラメーターの値が誤っています。たとえば、ローカルコンピューターから接続しようとしているのに、内部ネットワーク (クラシックネットワークなど) またはトンネルエンドポイント用のエンドポイントを構成している可能性があります。 -
解決策
「エンドポイント」ドキュメントを参照し、プロジェクトのリージョンおよびネットワーク環境に適した正しいエンドポイントを選択してください。
end_pointパラメーターには、MaxCompute サービスのエンドポイントを使用してください。トンネルエンドポイントは MaxCompute Tunnel サービス用です。
エラー: Accessing project '<projectname>' failed: <endpoint>
-
原因
end_pointパラメーターの値が誤っています。たとえば、http://service.ch-hangzhou.maxcompute.aliyun.com/apiを入力している可能性があります。中国 (杭州) リージョンの正しいパブリックネットワークエンドポイントはhttp://service.cn-hangzhou.maxcompute.aliyun.com/apiです。 -
解決策
「エンドポイント」ドキュメントを参照し、プロジェクトのリージョンおよびネットワーク環境に適した正しいエンドポイントをコピーしてください。手動で入力するのではなく、エンドポイントをコピーすることを推奨します。
スタートアップパラメーター
システムコマンドラインからスタートアップパラメーターを指定することで、コマンドを迅速に実行できます。
Usage: odpscmd [OPTION]...
where options include:
--help (-h)for help
--config=<config_file> specify another config file
--project=<prj_name> use project
--endpoint=<http://host:port> set endpoint
-k <n> will skip begining queries and start from specified position
-r <n> set retry times
-f <"file_path;"> execute command in file
-e <"command;[command;]..."> execute command, include sql command
次の表に、スタートアップパラメーターを示します。
|
パラメーター |
説明 |
例 |
|
|
すべての MaxCompute クライアントコマンドのヘルプ情報を表示します。 |
|
|
|
odps_config.ini ファイルのパスを指定します。デフォルトパスは |
|
|
|
アクセスする MaxCompute プロジェクトの名前を指定します。 |
|
|
|
MaxCompute サービスへの接続エンドポイントを指定します。詳細については、「エンドポイント」をご参照ください。 |
|
|
|
最初の n-1 文をスキップし、n 番目の文から実行を開始します。 |
最初の 2 文をスキップし、3 番目の文から実行を開始します。 |
|
|
ジョブ失敗時の再試行回数を設定します。 |
|
|
|
実行するコマンドを含むファイルを指定します。 |
|
|
|
実行するコマンドを指定します。 |
|
シェルまたは Windows コマンドラインで、odpscmd -e <SQL_statement> を使用して、動的な戻り値をシェル変数にキャプチャし、後続のジョブで使用できます。このシナリオでは、戻り値にランタイム詳細やヘッダーなどの余分な情報が含まれてはなりません。シェルスクリプトを容易にするために、odps_config.ini ファイル内の use_instance_tunnel パラメーターを false に設定して Instance Tunnel を無効にしてください。その後、set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; コマンドを実行してヘッダーを抑制します。
たとえば、1 列で 1、2、3 の 3 行のデータを持つ noheader という名前のテーブルがあるとします。次のコマンドを実行して標準出力をファイルにリダイレクトします。出力にはデータのみが含まれ、余分な情報は含まれません。
--Windows コマンドライン:
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--結果は D:\test.txt に保存されます。
--シェル:
/Users/.../odpscmd/bin/odpscmd -e "set odps.sql.select.output.format={\"needHeader\":false,\"fieldDelim\":\"\"};select * from noheader;" >/Users/A/temp/test.txt
--結果は /Users/A/temp/test.txt に保存されます。
--出力:
1
2
3
バージョン履歴
次の表に、odpscmd の最近の更新内容を示します。詳細については、特定のバージョンのリンクをクリックしてください。
odpscmd のバージョンおよびリリースノートの完全な一覧については、GitHub をご参照ください。
|
バージョン |
タイプ |
説明 |
|
新機能 |
STS トークンを一時的なセキュリティ認証情報として使用するサポートを追加しました。 |
|
|
バグ修正 |
依存関係の互換性問題を解決するために Apache Arrow ライブラリを更新しました。 |
|
|
新機能 |
MaxCompute クエリアクセラレーション (MCQA) 2.0 ジョブの進捗レポートを無効にする |
|
|
機能強化 |
|
|
|
バグ修正 |
CVE 脆弱性を解決するために依存関係をアップグレードしました。 |
|
|
新機能 |
外部ボリュームのダウンロードを高速化するオプションを追加しました。 |
|
|
機能強化 |
|
|
|
新機能 |
|
|
|
機能強化 |
|
|
|
新機能 |
|
|
|
新機能 |
|
|
|
バグ修正 |
MCQA モードを改善し、フォールバック動作をより正確に検出し、重複する Logview 表示を防止しました。 |
|
|
新機能 |
|
|
|
機能強化 |
|
|
|
新機能 |
Tunnel 操作で JSON データ型のサポートを追加しました。 |
|
|
新機能 |
|
|
|
機能強化 |
|
|
|
新機能 |
|
|
|
新機能 |
|
|
|
機能強化 |
|
|
|
新機能 |
|
|
|
バグ修正 |
Log4j 依存関係を削除しました。 |
|
|
新機能 |
プロジェクト内でのスキーマベースのデータ編成をサポートしました。詳細については、「スキーマ操作」をご参照ください。 |
|
|
新機能 |
Tunnel 経由での複雑なデータ型のアップロードおよびダウンロードをサポートしました。 |
|
|
機能強化 |
|
|
|
新機能 |
Data Lake Formation (DLF) に接続する外部プロジェクトの作成をサポートしました。これにより、レイクハウス機能が有効になります。 |
|
|
バグ修正 |
TIMESTAMP データのナノ秒部分がダウンロード中に誤って処理される問題を修正しました。 |