Pular para o conteúdo principal

Fazer upload de arquivos grandes com upload multipart

info

Beta

Esse recurso está em Beta. Para usá-la, um administrador do workspace deve ativar a Files API V3 com suporte a upload de arquivos grandes na página Previews . Consulte Gerenciar prévias do Databricks.

O upload de várias partes permite que você faça upload de arquivos grandes para volumes do Unity Catalog dividindo-os em partes menores que fazem upload independentemente e são então montadas em um único arquivo. Essa abordagem segue o mesmo modelo usado pelos principais provedores de cloud.

Um upload de solicitação única, que carrega um arquivo em uma única operação, aceita arquivos de até 5000 MiB. Para fazer upload de um arquivo maior ou de um arquivo cujo tamanho total é desconhecido quando o upload começa, use o upload multipart.

Requisitos​

Como funciona o upload de várias partes​

O upload de várias partes tem três passos:

  1. Iniciar o upload para começar uma sessão e receber uma ID de upload.
  2. Upload de partes , enviando o conteúdo de cada parte com o ID de upload e um número de parte.
  3. Conclua o upload fornecendo a lista de partes carregadas.

Você também pode cancelar um upload em andamento a qualquer momento com a ação abort-upload.

Os números das partes variam de 1 a 10000. Cada parte, exceto a última, deve ter pelo menos 5 MiB, e cada parte pode ter no máximo 4000 MiB. O Databricks monta as partes em ordem crescente de número de parte quando o upload é concluído.

Exemplo​

O exemplo a seguir faz upload de um arquivo em duas partes.

Para começar a sessão de upload, inicie o upload. A resposta contém o upload_id que identifica a sessão:

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

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

Para fazer upload da primeira parte, envie seu conteúdo com upload_id e part_number. A resposta inclui o ETag da parte:

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"

Para fazer upload da segunda parte, repita a solicitação com o próximo 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"

Para finalizar, conclua o upload com um corpo que liste cada parte e seu ETag armazenado:

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"

O ETag nesta resposta pertence ao arquivo montado completo, não a uma parte. Você pode usá-lo em solicitações condicionais posteriores, por exemplo, para sobrescrever o arquivo somente se ele não tiver sido alterado desde que você fez o upload.

Para cancelar o upload em vez de concluí-lo, envie a ação abort-upload com o upload_id:

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

200 OK