Klarety

Trabajos y trabajos por lotes

Cambie muchas filas con SQL como un trabajo por lotes, o ejecute su propio script de Spark en segundo plano.

Para desarrolladores

El trabajo largo corre en segundo plano como un trabajo, que usted sigue por su ID.

Usted quiereUse
Cambiar filas con unas pocas sentencias SQL, publicadas a la veznexus.start_batch_job()
Ejecutar su propio script de en Pythonnexus.jobs.submit()

Antes de empezar

  • El Acceso de su clave permite escribir.
  • El tiene ; si no, un trabajo se rechaza antes de empezar.
  • Todos los ejemplos suponen nexus = Nexus.connect().

Los trabajos gastan créditos

Un trabajo gasta los créditos del espacio de trabajo mientras corre. Revise su saldo en ConfiguraciónUso y límites.

Trabajos por lotes

Un trabajo por lotes ejecuta de 1 a 50 sentencias que cambian filas y las publica como un solo cambio: llegan todas, o ninguna.

Inicie un trabajo por lotes

close_old_orders.py
import time

from klarety import Nexus, RefusedError, WaitingForOwnerError

with Nexus.connect() as nexus:
    try:
        job = nexus.start_batch_job([
            "UPDATE orders SET status = 'closed' WHERE ordered_at < DATE '2026-01-01'",
            "DELETE FROM orders WHERE status = 'test'",
        ])
    except RefusedError as refused:
        raise SystemExit(f"Refused: {refused}")

    try:
        state = nexus.jobs.describe(job["job_id"])
        while state["state"] in ("running", "publishing"):
            time.sleep(5)
            state = nexus.jobs.describe(job["job_id"])
        print("Ended as", state["state"])
    except WaitingForOwnerError as waiting:
        print("Waiting for the owner's OK:", waiting, waiting.job_id)

Sígalo

jobs.describe() informa running, luego publishing y luego cómo terminó el trabajo: succeeded, failed, declined o expired.

Esperando al propietario

Algunos cambios necesitan el visto bueno del dueño de los datos. Entonces jobs.describe() lanza WaitingForOwnerError con el job_id para seguirlo. El trabajo queda en espera, no falló: nunca lo reenvíe.

Reglas

  • Cada sentencia debe leer o cambiar filas. Cambie columnas con Tablas y esquemas.
  • Una tabla vacía no tiene desde dónde partir. Agregue sus primeras filas con tables.edit_rows() o con una carga.

Trabajos con script de Spark

jobs.submit() ejecuta un script de Spark en Python dentro de los recursos que permite su plan.

Envíe un script

from klarety import Nexus, RefusedError

with Nexus.connect() as nexus:
    try:
        job = nexus.jobs.submit(script_uri, args=["--day", "2026-11-09"])
    except RefusedError as refused:
        raise SystemExit(f"Job refused: {refused}")
    print(job["job_id"], job["state"])
  • script_uri es un archivo .py en el almacenamiento propio de su espacio de trabajo; cualquier otro lugar se rechaza.
  • args se pasan al script, hasta 64.
  • Un trabajo corre como máximo lo que su plan permite correr a una sentencia.

Sígalo o cancélelo

print(nexus.jobs.describe(job["job_id"]))   # submitted, running, succeeded, failed or cancelled
nexus.jobs.cancel(job["job_id"])

Cuando un trabajo falla, exit_reason dice por qué.

Qué puede salir mal

ExcepciónCausaQué hacer
RefusedErrorUna sentencia no cambia filas, el script no es un .py de su almacenamiento, o pidió más de lo que permite su plan.Lea el mensaje y corrija la solicitud.
InsufficientCreditsErrorEl espacio de trabajo no puede pagar el trabajo.Agregue créditos.
WaitingForOwnerErrorEl cambio espera el visto bueno del propietario.Siga job_id; no lo reenvíe.
NotFoundErrorNo existe ese trabajo.Revise el ID.

Próximos pasos

En esta página