Fazer upload de arquivos grandes com upload multipart
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
- API de arquivos 3.0. A API de arquivos 2.0 não suporta upload multipart. Consulte Versões da API de arquivos.
- Envie solicitações para o hostname regional do seu workspace. Consulte Usar a API de arquivos com o hostname regional.
- Conectividade de rede para o Databricks e para o seu armazenamento. Consulte Conectividade de rede para a API de arquivos.
Como funciona o upload de várias partes
O upload de várias partes tem três passos:
- Iniciar o upload para começar uma sessão e receber uma ID de upload.
- Upload de partes , enviando o conteúdo de cada parte com o ID de upload e um número de parte.
- 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:
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:
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:
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:
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:
POST /api/3.0/fs/files/Volumes/c/s/v/file?action=abort-upload&upload_id=dvOR6FE39mNb
200 OK