Aller au contenu principal

upload des fichiers volumineux avec un upload en plusieurs parties

info

Beta

Cette fonctionnalité est en version bêta. Pour l'utiliser, un administrateur de workspace doit activer l’API Files V3 avec prise en charge de l’upload de fichiers volumineux à partir de la page Prévisualisations . Consultez Gérer les aperçus Databricks.

L’upload multipart vous permet d’upload des fichiers volumineux dans des volumes Unity Catalog en les divisant en plusieurs parties plus petites qui sont upload indépendamment, puis assemblées en un seul fichier. Cette approche suit le modèle utilisé par les principaux fournisseurs de cloud.

Un upload en une seule requête, qui upload un fichier en une seule opération, accepte des fichiers jusqu’à 5000 Mio. Pour télécharger un fichier plus volumineux, ou un fichier dont la taille totale est inconnue au start de l’upload, utilisez l’upload multipart.

Configuration requise​

Fonctionnement de l’upload en plusieurs parties​

L’upload multipart comporte trois étapes :

  1. Initier l'upload pour start une session et recevoir un ID d'upload.
  2. upload les parties , en envoyant le contenu de chaque partie avec l'ID d'upload et un numéro de partie.
  3. Terminez l’upload en fournissant la liste des parties uploadées.

Vous pouvez également annuler un upload en cours à tout moment avec l'action abort-upload.

Les numéros de pièce vont de 1 à 10 000. Chaque partie, à l’exception de la dernière, doit faire au moins 5 MiB et chaque partie peut faire au plus 4000 MiB. Databricks assemble les parties par ordre croissant de numéro de partie lorsque l’upload est terminé.

Exemple​

L'exemple suivant upload un fichier en deux parties.

Pour start la session d'upload, lancez l'upload. La réponse contient le upload_id qui identifie la session :

HTTP
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=initiate-upload

200 OK
Content-Type: application/json
{
"upload_id": "dvOR6FE39mNb"
}

Pour upload la première partie, envoyez son contenu avec le upload_id et le part_number. La réponse comprend le ETag de la partie :

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"

Pour upload la deuxième partie, répétez la demande avec le part_number suivant :

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"

Pour terminer, terminez l’upload avec un corps qui répertorie chaque partie et son ETag stocké :

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"

Le ETag dans cette réponse appartient à la totalité du fichier assemblé, pas à une partie. Vous pourrez l’utiliser dans des demandes conditionnelles ultérieures, par exemple pour remplacer le fichier seulement si celui-ci n’a pas été modifié depuis son upload.

Pour annuler l'upload au lieu de le compléter, envoyez l'action abort-upload avec upload_id:

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

200 OK