マルチパート uploadを使用した大きなファイルのupload
ベータ版
この機能はベータ版です。使用するには、ワークスペース管理者は プレビューページ から 大容量ファイルuploadをサポートするFiles API V3 を有効にする必要があります。Databricksのプレビューを管理を参照してください。
マルチパート uploadを使用すると、大きなファイルを小さなパートに分割し、それぞれを個別にuploadしてから1つのファイルに結合することで、Unity Catalog ボリュームにuploadできます。このアプローチは、主要なクラウドプロバイダーで使用されているものと同じモデルに従います。
1回の操作でファイルをuploadする単一要求uploadでは、最大5000 MiBのファイルを受け入れます。より大きなファイルをuploadする場合、またはupload起動時に合計サイズが不明なファイルをuploadする場合は、マルチパートuploadを使用してください。
要件
- ファイルAPI 3.0。ファイルAPI 2.0はマルチパートuploadをサポートしていません。ファイルAPIのバージョンを参照してください。
- ワークスペースのリージョンホスト名にリクエストを送信します。リージョンホスト名でファイル API を使用するを参照してください。
- Databricksおよびストレージへのネットワーク接続。Files APIのネットワーク接続を参照してください。
マルチパートuploadの仕組み
マルチパートuploadには3つのステップがあります:
- uploadを 開始して セッションを起動し、upload IDを受け取ります。
- パーツをuploadし 、各パーツのコンテンツをアップロードIDとパーツ番号とともに送信します。
- uploadされたパーツのリストを提供して、uploadを 完了 します。
abort-upload アクションを使用して、進行中の uploadをいつでもキャンセルできます。
パート番号は 1 から 10000 の範囲です。最後の部分を除くすべての部分は少なくとも 5 MiB であり、各部分は最大 4000 MiB です。uploadが完了すると、 Databricksはパート番号の昇順でパーツをアセンブルします。
例
次の例では、ファイルを2つの部分でuploadします。
uploadセッションを開始するには、uploadを開始します。応答には、セッションを識別するupload_idが含まれています:
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=initiate-upload
200 OK
Content-Type: application/json
{
"upload_id": "dvOR6FE39mNb"
}
最初のパートをuploadするには、そのコンテンツをupload_idおよびpart_numberと共に送信します。応答にはパートのETagが含まれます。
PUT /api/3.0/fs/files/Volumes/c/s/v/file?upload_id=dvOR6FE39mNb&part_number=1
Content-Length: 268435456
Content-Type: application/octet-stream
<binary data>
200 OK
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
2番目の部分をuploadするには、次のpart_numberでリクエストを繰り返します。
PUT /api/3.0/fs/files/Volumes/c/s/v/file?upload_id=dvOR6FE39mNb&part_number=2
Content-Length: 268435456
Content-Type: application/octet-stream
<binary data>
200 OK
ETag: "954fb694be262821177cfbc47f9d4a0aa06c349b"
終了するには、各パートとその格納されたETagをリストする本文でuploadを完了します。
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=complete-upload&upload_id=dvOR6FE39mNb
Content-Type: application/json
{
"parts": [
{ "part_number": 1, "etag": "\"33a64df551425fcc55e4d42a148795d9f25f89d4\"" },
{ "part_number": 2, "etag": "\"954fb694be262821177cfbc47f9d4a0aa06c349b\"" }
]
}
200 OK
ETag: "b3f1c2a94d6e7085f2a1c0b9e8d7654321fedcba"
この応答のETagは、部分ではなく、組み立てられたファイル全体に属します。後続の条件付きリクエストで使用できます。たとえば、upload後にファイルが変更されていない場合にのみ、そのファイルを上書きできます。
uploadを完了するのではなくキャンセルするには、upload_idと共にabort-uploadアクションを送信します:
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=abort-upload&upload_id=dvOR6FE39mNb
200 OK