Carica file grandi con upload multiparte

Importante

Questa funzionalità è in versione beta. Per utilizzarlo, un amministratore dello spazio di lavoro deve attivare Files API V3 con il supporto Large File Upload dalla pagina delle anteprime . Vedere Gestire le anteprime di Azure Databricks.

Il caricamento multiparte ti permette di caricare file di grandi dimensioni nei volumi di Unity Catalog dividendoli in parti più piccole che vengono caricate indipendentemente e poi assemblate in un unico file. Questo approccio segue lo stesso modello utilizzato dai principali fornitori di cloud.

Un upload a singola richiesta, che carica un file in un'unica operazione, accetta file fino a 5000 MiB. Per caricare un file più grande, o un file la cui dimensione totale è sconosciuta all'inizio del caricamento, usa il caricamento multiparte.

Requirements

Come funziona il caricamento multiparte

Il caricamento multiparte ha tre fasi:

  1. Avvia il caricamento per avviare una sessione e ricevi un ID di upload.
  2. Carica le parti, inviando il contenuto di ogni parte con l'ID di upload e un numero di parte.
  3. Completa il caricamento fornendo l'elenco dei pezzi caricati.

Puoi anche cancellare un upload in corso in qualsiasi momento con l'azione abort-upload .

I numeri di parte variano da 1 a 10000. Ogni parte, tranne l'ultima, deve avere almeno 5 MiB, e ogni parte può avere al massimo 4000 MiB. Azure Databricks ricompone le parti in ordine crescente di numero di parte quando il caricamento si completa.

Example

Il seguente esempio carica un file in due parti.

Per iniziare la sessione di caricamento, avvia il caricamento. La risposta contiene il upload_id che identifica la sessione:

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

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

Per caricare la prima parte, invia il suo contenuto con il upload_id e il part_number. La risposta include la parte 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"

Per caricare la seconda parte, ripeti la richiesta con il successivo 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"

Per concludere, completa il caricamento con un corpo che elenca ogni parte e il relativo ETag memorizzato:

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"

Il campo ETag in questa risposta appartiene all'intero fascicolo assemblato, non a una parte. Puoi usarlo in richieste condizionali successive, ad esempio per sovrascrivere il file solo se non è cambiato da quando l'hai caricato.

Per annullare il caricamento invece di completarlo, invia l'azione abort-upload con il upload_id:

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

200 OK