外部ボリュームは、MaxCompute が提供する分散ファイルシステムおよび非構造化データストレージソリューションです。OSS ディレクトリを MaxCompute プロジェクトにマッピングすることで、Object Storage Service (OSS) に保存されているファイルを MaxCompute テーブルにインポートすることなく、直接クエリおよび処理できます。これにより、データの冗長性と伝送のオーバーヘッドが削減されます。
一般的な操作
| 操作 | 説明 | 実行可能なユーザー |
|---|---|---|
| 外部ボリュームの作成 | プロジェクトに外部ボリュームを作成します | 外部ボリュームの所有者、プロジェクトオーナー、Super_Administrator または Admin ロールを持つユーザー |
| 外部ボリュームのリスト化とディレクトリ構造の表示 | すべての外部ボリュームをリスト化するか、特定のボリュームのディレクトリ構造を表示します | — |
| 外部ボリュームの削除 | 外部ボリュームを削除します | — |
前提条件
開始する前に、以下が準備されていることを確認してください:
-
MaxCompute クライアント (odpscmd) V0.43.0 以降。インストール手順については、「MaxCompute クライアント (odpscmd)」をご参照ください。
DataWorks コンソールの DataStudio ページまたは SQL クエリページでコマンドを実行するには、統合された MaxCompute クライアントが V0.43.2 以降である必要があります。バージョンを確認するには、
Show version;を実行します。詳細については、「DataWorks での MaxCompute の使用」をご参照ください。 -
Java SDK を使用する場合は、Java SDK V0.43.0 以降。
-
OSS へのアクセス権限を持つ Alibaba Cloud アカウントまたは RAM ユーザー。権限付与の手順については、「OSS の STS 認証」をご参照ください。
外部ボリュームの作成
構文
vfs -create <volume_name>
-storage_provider oss
-url <oss://oss_endpoint/bucket_name/directory_name>
[-acd <true|false>]
-role_arn <arn:aliyun:xxx/aliyunodpsdefaultrole>
[ ] で囲まれたパラメーターはオプションです。
| パラメーター | 必須 | 説明 |
|---|---|---|
volume_name |
はい | 作成する外部ボリュームの名前。 |
storage_provider |
はい | ストレージプロバイダー。oss に設定します。OSS が唯一サポートされているプロバイダーです。 |
url |
はい | データファイルが保存されている OSS ディレクトリ。フォーマット: oss://<oss_endpoint>/<bucket_name>/<directory_name>。バケット名と第 2 レベルのディレクトリ名の両方が必須です。エンドポイントの要件については、以下の注意事項をご参照ください。 |
acd |
いいえ | OSS ディレクトリが存在しない場合に自動的に作成するかどうか。デフォルト: false。動作の詳細については、以下の注意事項をご参照ください。 |
role_arn |
はい | OSS アクセス権限を持つ RAM ロールの Alibaba Cloud リソース名 (ARN)。ARN を取得するには、「STS が提供する一時的な認証情報を使用した OSS へのアクセス」をご参照ください。 |
`url` パラメーターに関する注意事項:
-
インターネットトラフィックの追加料金を避けるために、OSS 内部エンドポイントを使用してください。例:
oss://oss-cn-beijing-internal.aliyuncs.com/my-bucket/my-dir。内部エンドポイントの完全なリストについては、「リージョンとエンドポイント」をご参照ください。 -
リージョン間の接続性の問題を避けるために、OSS バケットを MaxCompute プロジェクトと同じリージョンにデプロイしてください。
`acd` パラメーターに関する注意事項:
-
false(デフォルト): 指定されたディレクトリが存在しない場合、コマンドはエラーで失敗します。 -
true: ディレクトリが存在しない場合、MaxCompute はrole_arnを介して付与された権限を使用して自動的に作成します。ディレクトリが既に存在する場合、MaxCompute はそれを直接使用します。
acd が true に設定され、ディレクトリが自動作成された場合、その後の外部ボリュームの作成が失敗しても、MaxCompute はそのディレクトリを削除しません。
外部ボリュームが作成されると、そのパスは odps://<project_name>/<volume_name> のフォーマットに従います。このパスは、Spark エンジンと MapReduce タスクで使用できます。
例
test_ext_l という名前の外部ボリュームを作成します:
vfs -create test_ext_l -storage_provider oss -url oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/ -role_arn acs:ram::xxxxxxx:role/aliyunodpsdefaultrole;
外部ボリュームのリスト化とディレクトリ構造の表示
構文
-- プロジェクト内のすべての外部ボリュームをリスト化
vfs -ls /;
-- 特定の外部ボリュームのディレクトリ構造を表示
vfs -ls [-R] /<volume_name>;
| パラメーター | 必須 | 説明 |
|---|---|---|
volume_name |
はい | 外部ボリュームの名前。 |
-R |
いいえ | サブディレクトリを再帰的にリスト化します。 |
例
すべての外部ボリュームをリスト化:
vfs -ls /;
想定される出力:
Found 2 items
drwxrwxrwx - 0 2023-03-11 12:06 /test_ext_l -> oss://oss-cn-shanghai-internal.aliyuncs.com/test/ex_volume
drwxrwxrwx - 0 2023-03-21 07:33 /myfirst_volume4 -> oss://oss-cn-shanghai-internal.aliyuncs.com/paristech/data
アクセス権限のない外部ボリュームは出力に表示されません。ユーザーにアクセス権を付与するには、次のコマンドを実行します。利用可能な権限は、Read、Write、CreateVolume です。
grant Read on volume myfirst_volume4 to RAM$xxxxxx:dev01;
`test_ext_l` のディレクトリ構造を表示:
vfs -ls -R /test_ext_l;
期待される出力:
drwxrwxrwx - 0 2023-03-27 07:31 /test_ext_l/test -> oss://oss-cn-hangzhou-internal.aliyuncs.com/test/ex_volume/test外部ボリュームの削除
構文
-- 構文 1
vfs -rm -r /<volume_name>;
-- 構文 2
vfs -rmv /<volume_name>;
| パラメーター | 必須 | 説明 |
|---|---|---|
volume_name |
はい | 削除する外部ボリュームの名前。 |
例
test_ext_l という名前の外部ボリュームを削除します:
vfs -rm -r /test_ext_l;
次のステップ
-
SDK を使用して外部ボリュームを管理するには、「SDK を使用した外部ボリュームの管理」をご参照ください。
-
外部ボリュームを使用して非構造化データをクエリおよび処理するエンドツーエンドの例については、「MaxCompute 外部ボリュームを使用した非構造化データの処理」をご参照ください。