MaxCompute ローカルクライアント (odpscmd) は、ローカルマシン上で効率的な操作を実行するためのコマンドラインインターフェイスを提供します。このクライアントを使用してコマンドを実行し、MaxCompute プロジェクトを管理できます。本トピックでは、クライアントのダウンロード、インストール、設定、起動、および使用方法について説明します。
適用範囲
ご利用のデバイスに Java 8 以降がインストールされている必要があります。
バージョン互換性
MaxCompute クライアント v0.28.0 以降は JDK 1.9 をサポートしています。それ以前のバージョンは JDK 1.8 のみをサポートしています。MaxCompute クライアントを起動した後、コマンドラインインターフェイスに表示されるバージョン番号を確認してください。MaxCompute クライアントの起動。
クライアントの出力形式は前方互換性がありません。コマンドの構文および動作はバージョンによって異なる場合があります。自動化目的でクライアント出力を解析しないでください。
その他のクライアントバージョンについては、aliyun-odps-console をご参照ください。
エンコーディング形式
クライアントはデフォルトで UTF-8 エンコーディングを使用します。ローカル環境で異なるエンコーディングが使用されている場合、クエリ結果やアップロードファイル内の中国語文字が文字化けする可能性があります。これは、MaxCompute テーブルに対するクエリ実行時や、Tunnel コマンドを使用したローカルデータファイルのアップロード時に発生する場合があります。
課金
クライアントを使用した MaxCompute プロジェクトへの接続は無料です。ただし、クライアント経由で実行する操作には MaxCompute の課金が発生する場合があります。たとえば、SQL クエリまたは書き込みコマンドを送信すると、コンピューティングリソースが消費されます。また、データの書き込みにはストレージ容量も使用されます。コンピューティングおよびストレージの両方に対して課金されます。詳細については、「課金項目および課金方法」をご参照ください。
MaxCompute クライアントのインストールおよび設定
v0.27.0 以降では、クライアントが MaxCompute V2.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 Secret です。
なし
end_point
はい
MaxCompute サービスのエンドポイントです。
この値は、MaxCompute プロジェクトを作成する際に選択したリージョンおよびネットワークタイプに基づいて設定してください。「エンドポイント」で、リージョンおよびネットワーク別のエンドポイント一覧をご確認ください。
重要このエンドポイントは MaxCompute サービス用です。MaxCompute Tunnel サービスには 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 GB を推奨します。
100
update_url
いいえ
予約済みパラメーターです。現時点では無視してください。
なし
use_instance_tunnel
いいえ
SQL クエリ結果のダウンロードに InstanceTunnel を使用するかどうかを指定します。有効な値は次のとおりです。
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 はそのエンドポイントを使用し、自動ルーティングされません。
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 フォルダで、
odpscmd.bat(Windows) またはodpscmd(macOS) をダブルクリックします。これにより MaxCompute クライアントが起動します。接続が成功すると、以下のメッセージが表示されます。
方法 2:システムのコマンドラインウィンドウ
システムのコマンドラインウィンドウで、MaxCompute クライアントのインストールパス直下の bin ディレクトリに移動します。その後、
odpscmd(Windows) またはsh odpscmd(Linux または macOS) を実行します。これにより MaxCompute クライアントが起動します。接続が成功すると、以下のメッセージが表示されます。説明Ubuntu では、
sh odpscmdを実行するとエラーが返される場合があります。代わりに./odpscmdを試してください。
システムのコマンドラインから 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 コマンドの実行
MaxCompute クライアント内で初めて
tunnel downloadコマンドを実行すると、クライアントはログを格納するセッションフォルダを作成します。このフォルダは、ご利用のデバイス上のクライアントインストールディレクトリ内のplugins/dshipサブディレクトリにあります。複数のユーザーが同じデバイスを共有して
tunnel downloadコマンドを実行する場合、以下のいずれかの方法を使用してデータのセキュリティを確保してください。ご利用のデバイスのフォルダ権限制御を使用して、セッションフォルダへのアクセスを管理します。
tunnel downloadコマンドで、-sd <new session folder name>または-session-dir <new session folder name>パラメーターを追加して、別のセッションフォルダにデータをダウンロードします。tunnel downloadコマンドの詳細については、「ダウンロード」をご参照ください。
関連ドキュメント
MaxCompute クライアントにログインした後、ご利用の MaxCompute プロジェクト内で SQL コマンドを実行できます。「クライアントを使用した MaxCompute の利用」をご参照ください。
コマンドの完全な構文については、「共通コマンド」または「SQL コマンドおよび関数」をご参照ください。
よくある質問
odps_config.ini ファイルを設定して MaxCompute クライアントを起動した後、発生する一般的なエラーを以下に示します。
エラー:no java found
原因
ご利用のマシンに 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 回ダウンロードした可能性があります。2 回目のダウンロードでは、フォルダ名が
odpscmd_public (1)に変更されています。フォルダ名にスペースまたは特殊文字が含まれていると、パスエラーが発生します。解決方法
フォルダ名からスペースおよび特殊文字を削除してください。
エラー:Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
原因
odps_config.ini ファイル内のプロジェクト名が正しくありません。
解決方法
MaxCompute コンソール にログインし、左上隅からリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
プロジェクト管理 ページで、正しいプロジェクト名をコピーし、odps_config.ini ファイルを更新します。
エラー:Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
原因
ご利用の AccessKey ID が、対象プロジェクトに追加された 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 エンドポイントではなく 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 ステートメント> の動的な戻り値をシェル変数にキャプチャし、その後のタスクでその変数を使用する必要がある場合があります。ランタイム情報やテーブルヘッダーなどの余分な出力を回避するには、odps_config.ini パラメーター use_instance_tunnel を false に設定して Instance Tunnel を無効化します。その後、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 に保存されます。
-- シェルで実行。
/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 クライアントの最近の更新を示します。各バージョンのリンクをクリックすると、詳細をご確認いただけます。
その他のバージョンおよび機能の更新については、「GitHub」をご参照ください。
バージョン | 種別 | 説明 |
新機能 | STS トークンを一時的なセキュリティ資格情報としてサポート。 | |
バグ修正 | Apache Arrow ライブラリを更新して、依存関係の互換性の問題を修正。 | |
新機能 |
| |
機能強化 |
| |
バグ修正 | CVE 脆弱性を修正するため、依存関係をアップグレード。 | |
新機能 | 外部ボリューム作成の高速化:外部ボリュームのダウンロードを高速化。 | |
機能強化 |
| |
新機能 |
| |
機能強化 |
| |
新機能 |
| |
新機能 |
| |
バグ修正 | MCQA モードがフォールバック動作をより正確に検出し、重複した logview 表示を回避するようになりました。 | |
新機能 |
| |
機能強化 |
| |
新機能 | Tunnel 操作における JSON データの型をサポート。 | |
新機能 |
| |
機能強化 |
| |
新機能 |
| |
新機能 |
| |
機能強化 |
| |
新機能 |
| |
バグ修正 | Log4j 依存関係を削除。 | |
新機能 | スキーマベースのプロジェクトストレージをサポート。「スキーマ操作」をご参照ください。 | |
新機能 | Tunnel のアップロードおよびダウンロードにおける複雑なデータの型をサポート。 | |
機能強化 |
| |
新機能 | Data Lake Formation (DLF) への外部プロジェクト接続をサポートし、データレイクハウス機能を実現。 | |
バグ修正 | TIMESTAMP データのダウンロード時にナノ秒 (nano) を正しく処理。 |