Repository navigation
Conversation
tnazarew
force-pushed
the
validation/no-false-greens
branch
from
November 12, 2026 13:16
0ca3298 to
0da89a4
Compare
Spark and Hive each had a copy of runner/dataproc_workflow.py; Hive's was a subset of Spark's (same cluster, job, GCS and credentials code; Spark adds run-scenarios and a configurable master machine type, Hive adds run-hive-query). They're merged into dev/dataproc/dataproc_workflow.py with all five subcommands, together with the (identical) requirements. The workflows call the new path; no behaviour change. New in dev/, shared by CI steps and local runs (the producer PRs that follow use them): - defaults.env: project, region, bucket - dataproc/create_cluster.sh, delete_cluster.sh (--list-mine for leftover clusters), gcs_upload.sh - dataproc/install_jars.sh: one Dataproc init action that copies the jars listed in the cluster metadata (JARS, JARS_TARGET_DIR, MASTER_JARS) and nothing else, no defaults; a failed copy fails the cluster creation - lib/status.sh: writes status.json - validation/validate_locally.sh: validates one run's events like CI (cached OpenLineage clone, specs and venv), status per scenario, exit 1 on failures Docs: dev/README.md, "Testing a scenario before committing" in producer/README.md. The PR path map runs Spark/Hive (and dbt for lib/) for dev/ changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
scripts/requirements.txt and dev/dataproc/requirements.txt pin different cachetools versions, so installing them in one pip resolve fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
tnazarew
force-pushed
the
dev/shared-helpers
branch
from
November 12, 2026 13:16
a103d71 to
4ad9797
Compare
Tez localizes the jars in the Dataproc lib dir and refuses one whose mtime differs between nodes ('changed on src
filesystem'). gsutil cp -P takes the mtime from the object's goog-reserved-file-mtime metadata, which a jar uploaded
without -P doesn't have, so every node got its copy time. Seen with a manually uploaded transports-gcs snapshot.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #353 (base
validation/no-false-greens; both change the Spark/Hive workflows). Retarget after #353 merges.Why
Groundwork for running each producer locally the same way CI does (follow-up PRs per producer). Spark and Hive each carry a copy of
runner/dataproc_workflow.py; Hive's is a strict subset of Spark's (the cluster, job, GCS and credentials code is identical; Spark addsrun-scenariosand a configurable master machine type, Hive addsrun-hive-query).What (no behaviour change)
dev/dataproc/dataproc_workflow.py= Spark's file (moved withgit mv) plus Hive'srun-hive-query; the two identicalrequirements.txtbecomedev/dataproc/requirements.txt. The Spark and Hive workflows call the new paths.dev/, used by CI steps and local runs (wired in by the producer PRs):defaults.envdataproc/create_cluster.sh,delete_cluster.sh,gcs_upload.sh--list-minefor leftovers), upload-unless-presentdataproc/install_jars.shJARS→JARS_TARGET_DIRon every node,MASTER_JARS→ master only), no defaults; a failed copy fails cluster creationlib/status.shstatus.jsonvalidation/validate_locally.shdev/README.md(contents, prerequisites:gcloud auth application-default login, no key file needed) and a "Testing a scenario before committing" section inproducer/README.md..gitignorehad a Python-packaginglib/pattern that would ignoredev/lib/; added an exception.dev/dataproc/,dev/lib/,dev/defaults.env(dbt fordev/lib/).Verification
pytest scripts/tests→ 78 passed, including:test_dataproc_workflow_cli.py: all five subcommands, and every invocation the Spark and Hive workflows make today parses to the right handler.test_install_jars.py: runs the init action with stub metadata andgsutil(every-node vs master-only copies, default target dir and fallback, failing copy fails, empty metadata). Found and fixed an empty-listset -uerror under macOS bash.test_run_scripts.py:--help, unknown option and missing arguments for everydev/script.validate_locally.shon the stored Hive events of the last release run (OL 1.55.0):aggregate_job SUCCESS, exit 0; with astatus.jsonmarking the jobFAILED:producer jobFAILURE, exit 1.dataproc_workflow.py, so its own check runs Spark and Hive for real.🤖 Generated with Claude Code