メインコンテンツまでスキップ

マルチパート uploadを使用した大きなファイルのupload

備考

ベータ版

この機能はベータ版です。使用するには、ワークスペース管理者は プレビューページ から 大容量ファイルuploadをサポートするFiles API V3 を有効にする必要があります。Databricksのプレビューを管理を参照してください。

マルチパート uploadを使用すると、大きなファイルを小さなパートに分割し、それぞれを個別にuploadしてから1つのファイルに結合することで、Unity Catalog ボリュームにuploadできます。このアプローチは、主要なクラウドプロバイダーで使用されているものと同じモデルに従います。

1回の操作でファイルをuploadする単一要求uploadでは、最大5000 MiBのファイルを受け入れます。より大きなファイルをuploadする場合、またはupload起動時に合計サイズが不明なファイルをuploadする場合は、マルチパートuploadを使用してください。

要件​

マルチパートuploadの仕組み​

マルチパートuploadには3つのステップがあります:

  1. uploadを 開始して セッションを起動し、upload IDを受け取ります。
  2. パーツをuploadし 、各パーツのコンテンツをアップロードIDとパーツ番号とともに送信します。
  3. uploadされたパーツのリストを提供して、uploadを 完了 します。

abort-upload アクションを使用して、進行中の uploadをいつでもキャンセルできます。

パート番号は 1 から 10000 の範囲です。最後の部分を除くすべての部分は少なくとも 5 MiB であり、各部分は最大 4000 MiB です。uploadが完了すると、 Databricksはパート番号の昇順でパーツをアセンブルします。

例​

次の例では、ファイルを2つの部分でuploadします。

uploadセッションを開始するには、uploadを開始します。応答には、セッションを識別するupload_idが含まれています:

HTTP
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が含まれます。

HTTP
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でリクエストを繰り返します。

HTTP
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を完了します。

HTTP
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アクションを送信します:

HTTP
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=abort-upload&upload_id=dvOR6FE39mNb

200 OK