MaxCompute ローカルクライアント (odpscmd) は、コマンドライン操作用に設計されています。ローカルマシンで実行することで、コマンドを効率的に実行し、プロジェクトを管理できます。このトピックでは、クライアントのダウンロード、インストール、設定、実行、および使用方法について説明します。
適用範囲
MaxCompute クライアントをインストールするデバイスに、Java 8 以降のバージョンがインストールされていること。
バージョンの互換性
MaxCompute クライアント V0.28.0 以降は、Java 開発キット (JDK) 1.9 をサポートしています。V0.28.0 より前のバージョンは、JDK 1.8 のみをサポートしています。MaxCompute クライアントを起動すると、コマンドラインインターフェイスでクライアントのバージョン番号を確認できます。
MaxCompute クライアントの出力フォーマットには、前方互換性がありません。コマンドのフォーマットと動作は、バージョンによって異なる場合があります。解析タスクでクライアントの出力フォーマットに依存しないでください。
クライアントのバージョンの詳細については、「aliyun-odps-console」をご参照ください。
エンコーディング形式
クライアントはデフォルトで UTF-8 エンコーディングを使用します。ご利用のローカル環境が UTF-8 エンコーディングを使用していない場合、MaxCompute テーブルをクエリして返された値に中国語文字が含まれていると、文字化けが発生することがあります。また、クライアントを使用して Tunnel コマンドを実行し、ローカルのデータファイルを MaxCompute にアップロードする際にも、文字化けが発生することがあります。
課金
MaxCompute クライアントを使用してプロジェクトに接続するだけでは、料金は発生しません。ただし、クライアントを通じて実行する操作によっては、MaxCompute の料金が発生する場合があります。たとえば、クライアントを使用して SQL クエリと書き込みコマンドを送信した場合、SQL コマンドは MaxCompute 上で実行される際にコンピューティングリソースを消費し、書き込まれたデータはストレージ容量を占有します。これにより、コンピューティング料金とストレージ料金が発生します。MaxCompute の課金の詳細については、「課金項目と課金方法」をご参照ください。
MaxCompute クライアントをインストールして構成する
クライアントは V0.27.0 から MaxCompute V2.0 データ型エディションをサポートしています。新しいデータ型を使用することを推奨します。サポートされているデータ型の一覧については、「データ型エディション」をご参照ください。
以下のステップに従ってください:
MaxCompute クライアントインストールパッケージ (GitHub) をダウンロードします。
説明リンクをクリックしてクライアントのリリースベージに移動し、最新バージョンの MaxCompute クライアントインストールパッケージ (odpscmd_public.zip) をダウンロードしてください。
上記のリンクからパッケージをダウンロードできない場合は、MaxCompute クライアントインストールパッケージ (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 の管理] ページで AccessKey ID を取得できます。
なし
access_key
はい
AccessKey ID に対応する AccessKey シークレット。
なし
end_point
はい
MaxCompute サービスのエンドポイント。
MaxCompute プロジェクトを作成する際に選択したリージョンとネットワーク接続タイプに基づいてエンドポイントを設定します。さまざまなリージョンとネットワークのエンドポイントについては、「エンドポイント」をご参照ください。
重要このエンドポイントは MaxCompute サービス用であり、Tunnel エンドポイントは MaxCompute Tunnel サービス用です。ここでは MaxCompute サービスのエンドポイントを入力してください。
エンドポイントが正しく設定されていない場合、アクセスエラーが発生します。エンドポイントが正しいことを確認してください。
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
いいえ
Logview アドレス。このパラメーターを設定することを推奨します。このパラメーターを設定しない場合、ジョブが失敗したときに問題を迅速に特定できません。
このアドレスを使用して、ジョブの詳細な実行時情報を表示でき、トラブルシューティングの基礎となります。値は 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 GB に設定することを推奨します。
100
update_url
いいえ
予約済みのパラメーターであり、無視できます。
なし
use_instance_tunnel
いいえ
InstanceTunnel を使用して SQL ステートメントの実行結果をダウンロードするかどうかを指定します。 有効な値:
True:InstanceTunnel を使用して SQL 文の実行結果をダウンロードします。
False:InstanceTunnel を使用して SQL 文の実行結果をダウンロードしません。
デフォルト値: False。
True
instance_tunnel_max_record
いいえ
クライアントが SQL 実行結果に対して返すことができるレコードの最大数。use_instance_tunnel を True に設定した場合、このパラメーターを設定する必要があります。最大値は 10000 です。
10000
tunnel_endpoint
いいえ
Tunnel サービスのパブリックエンドポイント。
Tunnel エンドポイントを設定しない場合、Tunnel は MaxCompute サービスが存在するネットワークに対応する Tunnel エンドポイントにトラフィックを自動的にルーティングします。
Tunnel エンドポイントを設定した場合、設定されたエンドポイントが使用され、自動ルーティングは実行されません。
さまざまなリージョンとネットワークの Tunnel エンドポイントについては、「エンドポイント」をご参照ください。
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
いいえ
MaxCompute プロジェクトのプロパティを設定します。
プロパティの詳細については、「プロパティ」をご参照ください。
set.odps.sql.decimal.odps2=true
上記の情報が正しく設定されていることを確認してください。設定が正しくないと、プロジェクトへの接続に失敗します。
MaxCompute クライアントを実行する
RAM ユーザーを使用して MaxCompute クライアントを実行する場合、ご利用の Alibaba Cloud アカウントを使用して、ターゲットの MaxCompute プロジェクトに RAM ユーザーを追加します。ワークスペースメンバーの追加に関する詳細については、「他のユーザーへの権限付与」をご参照ください。
以下のいずれかの方法で MaxCompute クライアントを起動します:
方法 1:インストールパッケージ内のスクリプトファイルを使用
MaxCompute クライアントのインストールディレクトリの bin フォルダで、Windows の場合は
odpscmd.batファイルを、macOS の場合はodpscmdファイルをダブルクリックして MaxCompute クライアントを起動します。以下の情報が返された場合、MaxCompute プロジェクトへの接続は成功です。
方法 2:オペレーティングシステムのコマンドラインウィンドウを使用
ご利用のオペレーティングシステムのコマンドラインウィンドウで、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 の課金」をご参照ください。
オペレーティングシステムのコマンドラインウィンドウでコマンドのヘルプ情報を表示
ご利用のオペレーティングシステムのコマンドラインウィンドウで、MaxCompute クライアントのインストールパスの bin ディレクトリに切り替えます。次のコマンドを実行して、すべてのコマンドのヘルプ情報を表示します。コマンドラインウィンドウで MaxCompute クライアントを起動する際に、一連のパラメーターを指定できます。パラメーターの詳細については、「起動パラメーター」をご参照ください。
...\odpscmd\bin>odpscmd -h現在のログインユーザー情報の取得
MaxCompute クライアントを実行した後、次のコマンドを実行して現在のログインユーザーの情報を取得します。
odps@project_name>whoami;応答は以下の通りです。
Name:現在のログインユーザーのアカウント情報。
Source IP:MaxCompute クライアントが配置されているデバイスの IP アドレス。
End_Point:MaxCompute サービスのエンドポイント。
Project:MaxCompute プロジェクトの名前。
Schema:MaxCompute プロジェクト内のスキーマ。
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 コマンドと関数」をご参照ください。
FAQ
odps_config.ini ファイルを設定した後、MaxCompute クライアントを起動する際に、以下の一般的なエラーが発生することがあります:
エラー:no java found
原因
MaxCompute クライアントを実行するマシンに Java がインストールされていません。
ソリューション
MaxCompute クライアントを実行するマシンに Java をインストールし、環境変数を設定します。MaxCompute クライアント V0.28.0 以降は JDK 1.9 をサポートしています。それ以前のバージョンは JDK 1.8 のみをサポートしています。
エラー:Cannot find or load the main class com.aliyun.openservices.odps.console.ODPSConsole
原因
クライアントのインストールパッケージを 2 回ダウンロードした可能性があります。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パラメーターの値が正しくありません。たとえば、ローカルコンピュータ上の MaxCompute クライアントを使用してプロジェクトに接続する際に、Alibaba Cloud クラシックネットワークのエンドポイント (パブリックネットワーク環境内の内部ネットワークエンドポイント) を使用したり、Tunnel エンドポイントを入力したりした場合です。ソリューション
Endpoints ドキュメントを参照し、接続するプロジェクトのリージョンとネットワーク環境に一致するエンドポイントを選択してください。
エンドポイントは MaxCompute サービス用であり、Tunnel エンドポイントは MaxCompute Tunnel サービス用です。
end_pointパラメーターは、Tunnel エンドポイントではなく、MaxCompute サービスのエンドポイントに設定する必要があります。
エラー:Accessing project '<projectname>' failed: <endpoint>
原因
end_pointパラメーターの値が正しくありません。たとえば、中国 (杭州) リージョンのパブリックエンドポイントであるhttp://service.cn-hangzhou.maxcompute.aliyun.com/apiの代わりにhttp://service.ch-hangzhou.maxcompute.aliyun.com/apiを入力した場合です。ソリューション
エンドポイント ドキュメントを参照し、接続先プロジェクトのリージョンとネットワーク環境に一致するエンドポイントをコピーしてください。エンドポイントは手入力しないことをお勧めします。
起動パラメーター
オペレーティングシステムのコマンドラインウィンドウで、一連のパラメーターを指定してコマンドを迅速に実行できます。使用方法は以下の通りです。
Usage: odpscmd [OPTION]...
where options include the following:
--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 サービスのエンドポイントを指定します。エンドポイントの詳細については、「エンドポイント」をご参照ください。 |
|
| 指定された位置から文の実行を開始します。 | 最初の 2 つの文を無視し、3 番目の文から開始します。 |
| ジョブが失敗した場合のリトライ回数を設定します。 |
|
| 読み取るファイルを指定します。 |
|
| 実行するコマンドを指定します。 |
|
シェルウィンドウまたは Windows コマンドプロンプトでは、odpscmd -e <SQL_statement> コマンドからの動的な戻り値を使用する必要がある場合があります。 シェル変数は、この動的な戻り値を取得して、シェル内の後続のジョブで使用します。 このシナリオでは、戻り値にランタイム情報やテーブルヘッダーなどの余分な情報を含めてはなりません。 シェルの呼び出しを容易にするために、odps_config.ini ファイルの use_instance_tunnel パラメーターを false に設定して、インスタンストンネルサービスを無効にします。 次に、set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; コマンドを実行して、テーブルヘッダーを非表示にします。
たとえば、noheader という名前のテーブルには 1 つの列と 3 行のデータ (1, 2, 3) があります。次のコマンドを実行して、計算結果を標準出力 (stdout) にリダイレクトしてターゲットハンドルに送ります。結果には、他の余分な情報なしで特定のデータのみが含まれます:
--Windows コマンドプロンプトで次のコマンドを実行します。
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--結果は D:\test.txt に保存されます。
--Shell ウィンドウで次のコマンドを実行します。
/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バージョン更新履歴
以下の表は、MaxCompute クライアントの最近のバージョン更新について説明しています。詳細については、対応するバージョンのリンクをクリックしてください。
MaxCompute クライアントのバージョンと関連する機能更新の詳細については、「GitHub」をご参照ください。
バージョン | 変更タイプ | 説明 |
新機能 | Security Token Service (STS) トークンを一時的なセキュリティ認証情報として使用することをサポートします。 | |
バグ修正 | Apache Arrow ライブラリのバージョンをアップグレードし、Arrow ライブラリの依存関係に関する互換性の問題を修正しました。 | |
新機能 | 進捗レポートをスキップするオプションを追加しました。 | |
機能強化 |
| |
バグ修正 | 共通脆弱性識別子 (CVE) の脆弱性を解消するために依存関係をアップグレードしました。 | |
新機能 | 外部ボリューム作成の高速化を強化:外部ボリュームのダウンロードに高速化オプションを追加しました。 | |
機能強化 |
| |
新機能 |
| |
機能強化 |
| |
新機能 |
| |
新機能 |
| |
バグ修正 | MCQA モードがフォールバック動作をより正確に識別できるようになり、Logview が繰り返し表示されるのを防ぎます。 | |
新機能 |
| |
機能強化 |
| |
新機能 | Tunnel 関連の操作が JSON データ型をサポートします。 | |
新機能 |
| |
機能強化 | テーブル記述のストレージ階層情報を強化: | |
新機能 |
| |
新機能 |
| |
機能強化 |
| |
新機能 |
| |
バグ修正 | Log4j の依存関係を削除しました。 | |
新機能 | スキーマによるプロジェクトデータの保存をサポートします。詳細については、「スキーマ操作」をご参照ください。 | |
新機能 | Tunnel を介した複合データ型のアップロードとダウンロードをサポートします。 | |
機能強化 |
| |
新機能 | 外部プロジェクトを作成して Data Lake Formation (DLF) に接続し、データレイクハウス機能を実現することをサポートします。 | |
バグ修正 | ダウンロード中に TIMESTAMP データのナノ秒部分が誤って処理される問題を修正しました。 |