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.
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
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 inline en la configuración. Para checks simples y rápidos que no justifican un archivo aparte. Las variables funcionan igual.
TABLE
Checks predefinidos sobre una tabla: NULLS, DUPLICATES, WHITES. Sin escribir SQL — solo declara qué columnas validar.
FILE
Validaciones sobre ficheros antes de cargarlos: CSV, Parquet, etc. Detecta problemas de calidad antes de que lleguen a la tabla.
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.
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.CLI Arguments: Variables pasadas con -c KEY=VALUE o --conf KEY=VALUE en el comando de lanzamiento.
- 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
OSS 3.5, 4.0, 4.1
Databricks
Runtimes 15.4, 16.4, 17.3
Snowflake
AWS
EMR, Glue, S3
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.
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["--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.