Caso 3: Aumentando a Memória de um Job

Como resolver problemas de memória em jobs que falham por falta de recursos

Caso 3: Aumentando a Memória de um Job

Este guia demonstra como identificar e resolver problemas de memória em jobs que estão falhando com OutOfMemoryError.

Autenticação

import requests
import json
import os
from pprint import pprint

BASE_URL = "https://maestro.dadosfera.ai"

response = requests.post(
    f"{BASE_URL}/auth/sign-in",
    data=json.dumps({
        "username": os.environ['DADOSFERA_USERNAME'],
        "password": os.environ["DADOSFERA_PASSWORD"]
    }),
    headers={"Content-Type": "application/json"},
)

headers = {
    "Authorization": response.json()['tokens']['accessToken'],
    "Content-Type": "application/json"
}
PIPELINE_ID = "7b8b3399-b8c0-4fc5-9116-142cd9f4e7ae"
JOB_ID = "7b8b3399-b8c0-4fc5-9116-142cd9f4e7ae-0"

Configurações padrão

  • Todo job criado na Dadosfera inicia com 4 GB de memória
  • O limite máximo via API é 12 GB

Passo 1: Aumentar Memória (PUT)

O endpoint PUT /platform/jobs/{jobId}/memory permite ajustar a memória de um job individual.

NEW_MEMORY = 8192  # 8 GB

payload = {
    "amount": NEW_MEMORY
}

response = requests.put(
    f"{BASE_URL}/platform/jobs/{JOB_ID}/memory",
    headers=headers,
    json=payload
)
pprint(response.status_code)
200

Passo 2: Re-executar Pipeline

payload = {"pipeline_id": PIPELINE_ID}

response = requests.post(
    f"{BASE_URL}/platform/pipeline/execute",
    headers=headers,
    json=payload
)
pprint(response.json())

Passo 3: Aumentar memória de TODOS os jobs da pipeline

O endpoint PUT /platform/pipeline/{pipelineId}/memory aplica a mesma configuração de memória a todos os jobs da pipeline.

payload = {"amount": 4096}

response = requests.put(
    f"{BASE_URL}/platform/pipeline/{PIPELINE_ID}/memory",
    headers=headers,
    json=payload
)
pprint(response.json())

Referência: Valores de Memória Recomendados

CenárioMemória
< 100K registros1024 MB
100K - 1M registros2048 MB
1M - 10M registros4096 MB
> 10M registros8192 MB
Muitas colunas (> 50)+2048 MB
Colunas JSON grandes+2048 MB
Limite máximo12000 MB