upload des fichiers volumineux avec un upload en plusieurs parties
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
- API de fichiers 3.0. L'API Files 2.0 ne prend pas en charge l'upload en plusieurs parties. Voir les versions des API Files.
- Envoyez des demandes au hostname régional de votre workspace. Voir Utiliser l’API Files avec le hostname régional.
- Connectivité réseau à Databricks et à votre stockage. Voir Connectivité réseau pour l’API Files.
Fonctionnement de l’upload en plusieurs parties
L’upload multipart comporte trois étapes :
- Initier l'upload pour start une session et recevoir un ID d'upload.
- upload les parties , en envoyant le contenu de chaque partie avec l'ID d'upload et un numéro de partie.
- 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 :
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 :
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 :
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é :
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:
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=abort-upload&upload_id=dvOR6FE39mNb
200 OK