Saltar al contenido
NeptunoDQ

Arquitectura

DAG sobre Spark, multi-engine de verdad.

NeptunoDQ construye un grafo acíclico dirigido de tus reglas de calidad, las ejecuta en paralelo respetando dependencias, y funciona de forma idéntica sobre Apache Spark open source y Databricks.

DAG de reglas

Dependencias respetadas, fallos contenidos.

NeptunoDQ construye un DAG de tus reglas antes de ejecutarlas. Si Rule B depende de Rule A, B solo se ejecuta si A pasa. Si A falla o se salta, B se cancela automáticamente para no desperdiciar recursos del clúster.

  • Dependencias explícitas. Declara qué reglas dependen de cuáles en el fichero de configuración. El motor calcula el orden óptimo.
  • Propagación de fallos. Un fallo en un nodo padre se propaga hacia sus descendientes, que se marcan como skipped sin ejecutarse.
  • Sin ejecuciones huérfanas. Nunca se ejecuta una regla hija sobre datos que ya se sabe que son inválidos por la regla padre.
Diagrama de DAG de NeptunoDQextract_usersextract_ordersvalidate_moneycheck_dupesnulls_checksummary_report

Spark Fair Scheduler

Las ramas independientes corren en paralelo.

Pool por regla

Cada regla se asigna a su propio scheduler pool, evitando que una regla lenta bloquee a las demás.

Paralelismo real

Las ramas sin dependencias se ejecutan a la vez. Una suite de 50 reglas no tarda 50 veces lo que una.

Clúster aprovechado

El Fair Scheduler distribuye los recursos del clúster entre las reglas activas, maximizando la utilización.

Tipos de regla

Cinco tipos de control, un único inventario.

Desde SQL en archivo hasta notebooks de Databricks. Todos comparten el mismo ciclo de vida: propuesta, revisión, aprobación, ejecución y trazabilidad.

SQL_FILE

SQL_FILE

Reglas SQL en archivos externos. Ideal para queries complejas con control de versiones. El archivo puede vivir en HDFS, S3 o local.

SQL_TEXT

SQL_TEXT

SQL inline en la configuración. Para checks simples y rápidos que no justifican un archivo aparte. Las variables funcionan igual.

TABLE

TABLE

Checks predefinidos sobre una tabla: NULLS, DUPLICATES, WHITES. Sin escribir SQL — solo declara qué columnas validar.

FILE

FILE

Validaciones sobre ficheros antes de cargarlos: CSV, Parquet, etc. Detecta problemas de calidad antes de que lleguen a la tabla.

ADBNOTEBOOK

ADBNOTEBOOK

Ejecuta un notebook de Databricks como paso de calidad. Para lógica de validación compleja que ya existe como notebook.

Variables

Variables y sustitución paramétrica.

Usa ${VARIABLE_NAME} en cualquier valor de configuración. NeptunoDQ las sustituye en tiempo de ejecución según el orden de resolución definido.

config.yamlYAML
project_id: "neptuno-demo"
department: "analytics"
mdc: "neptuno-demo-001"

neptuno_properties:
  spark.neptuno.num.thread: "4"
  spark.sql.shuffle.partitions: "10"

rules:
  - control_type: "SQL_FILE"
    rule_id: "check_total_money"
    file: "${PATH}/rules/validate_money.sql"
    table: "${USERS_TABLE}"
    umbral: "0.01"
    variables:
      table: "${NEPTUNO_SCHEMA}.${USERS_TABLE}"
      max_age: "75"
    sql_aggregations:
      total_money: "sum(money)"

  - control_type: "SQL_TEXT"
    rule_id: "check_vip_users"
    text: "select * from ${table} where upper(tier) = 'VIP' and spend < ${min_spend}"
    table: "${USERS_TABLE}"
    variables:
      table: "${NEPTUNO_SCHEMA}.${USERS_TABLE}"
      min_spend: "1000"
    sql_aggregations:
      violation_count: "count(*)"

Orden de resolución

  1. 1.CLI Arguments: Variables pasadas con -c KEY=VALUE o --conf KEY=VALUE en el comando de lanzamiento.
  2. 2.Variables de entorno: Variables de sistema disponibles en tiempo de ejecución. Útil para secretos y configuración de entorno.

Engines soportados

Mismo motor, múltiples entornos.

NeptunoDQ funciona sobre Apache Spark open source y Databricks con el mismo fichero de configuración. Los demás engines están en el roadmap.

Apache Spark logo
Soportado

Apache Spark

OSS 3.5, 4.0, 4.1

Databricks logo
Soportado

Databricks

Runtimes 15.4, 16.4, 17.3

Snowflake logo
En roadmap

Snowflake

AWS logo
Compatible

AWS

EMR, Glue, S3

Azure logo
Compatible

Azure

ADB, ADLS

CLI y Launchers

Dos launchers, un mismo comando mental.

Para Apache Spark open source usa spark-submit. Para Databricks crea un Workflows Job con el JAR y los parámetros como lista de strings.

Apache SparkBash
spark-submit \
  --class com.softbenur.neptuno.spark.NeptunoProjectSparkSubmit \
  neptuno-launcher-spark.jar \
  --mode YAML \
  --path /path/to/config.yaml \
  --database my_database \
  --conf ENV=prod
Databricks Job parametersJSON
["--mode", "JSON", "--path", "dbfs:/configs/quality_rules.json", "--database", "my_database"]

Main class: com.softbenur.neptuno.spark.NeptunoProjectDatabricksSubmit. Tipo de tarea: JAR. Las variables de entorno también se pueden pasar como --conf ENV=prod.

Ver la arquitectura en demo real.

Explora el demo de arquitectura y los recorridos del producto.