Key Salting
Split a hot key with a stable row-based salt, merge valid partial states, and preserve duplicates and unmatched rows when salting a join.
Split a hot key with a stable row-based salt, merge valid partial states, and preserve duplicates and unmatched rows when salting a join.
Diagnose uneven Spark work using records, bytes, and runtime metrics, and distinguish a hot key from other causes of slow tasks.
Define a Python function’s input and return contract, handle nulls, inspect its execution boundary, and compare it with equivalent built-in expressions.
Remove unneeded columns while retaining filter, join, and grouping inputs, and distinguish a smaller projection from measured storage savings.
Separate a query’s relational intent from execution operators, read analyzed and optimized plans, and avoid confusing plan nodes with task stages.
Understand a Spark DataFrame as rows with a schema and relational plan, build expressions, and distinguish transformations from collected results.
Read how Spark revises SQL physical plans with runtime statistics, compare initial and final plans, and avoid treating coalescing as guaranteed.
Distinguish cached partitions from the recipe to recompute them, check what survives failure, and separate lineage from a durable input backup.
Understand how Spark regroups records across partitions, why partial aggregation helps, and why an exchange alone does not measure network bytes.
Trace an action through Spark jobs, stages, and tasks, distinguish attempts from logical work, and avoid a universal shuffle-count formula.
Separate Spark coordination from task execution, account for Python worker memory, and understand why collect puts pressure on the receiver.
Understand an RDD as partitioned data with dependencies, distinguish transformations from actions, and keep immutability separate from source snapshots.
Distinguish ResourceManager, NodeManager, and ApplicationMaster roles, and understand why resource containers do not guarantee latency.
Understand mapper-local combining, optional repeated execution, and why merging sums and counts is safer than averaging partial means.
Follow input splits through mapping, keyed shuffle, and reduction, and separate successful task output from repeated external effects.
Separate Hive Metastore metadata from table rows, check partition registration, and account for backend availability and connector behavior.
Understand how HDFS separates metadata from block storage, repairs surviving replicas, and differs from a backup or a transaction layer.
See how Athena computes partition locations from rules, why registration is ignored, and how an incorrect range can silently hide existing data.
Use partition values to exclude locations, distinguish pruning from row filtering, and avoid changing the answer just to reduce scanning.
Understand how an external table maps SQL to stored data, what registration controls, and why visibility alone is not a committed snapshot.
Understand when a reader can apply filters or skip data, why overlapping statistics are only candidates, and how to verify actual work.
Distinguish Parquet row groups, column chunks, and pages, and see how row group size affects writer memory, statistics-based skipping, and parallel reads.
Distinguish Arrow memory buffers from storage encoding, understand IPC exchange, and check the conditions needed for zero-copy access.
Learn how Avro uses writer and reader schemas, why nullable fields still need read defaults, and how container files differ from event framing.
Understand ORC stripes, column streams, and indexes, and check reader support before assuming a filter skips storage work.
Understand Parquet row groups, column chunks, and optional statistics, and separate a file format from table transactions.
Combine small files while preserving records, publish replacements safely, and evaluate request savings alongside rewrite and retention costs.
Publish an exact immutable file set through a manifest, reject duplicate or foreign references, and retain files needed by pinned readers.
Use create-only and compare-and-swap preconditions for object writes, handle conflicts, and keep publication order separate from source freshness.
Keep detailed operational movements traceable to source events, reconcile balances, and distinguish a signed movement table from double-entry journals.
Explain a closing balance from its opening value and movements, align scope and cutoff, and detect errors hidden by matching aggregate totals.
Store money with its currency and scale, check provider-specific representations, and convert amounts without assuming that every currency uses cents.
Separate a payment hold from capture, keep expiry and partial capture rules explicit, and avoid treating either event as a bank deposit.
Recognize values moved into a variant column after a type conflict, reconcile split values, and separate successful loading from correct meaning.
Flatten nested objects and arrays into tables with explicit parent links and child grain, and handle empty lists without leaving stale rows.
Evaluate a data connector by extraction coverage, state, schema handling, load behavior, and recovery rather than by a catalog entry alone.
Use the writer schema to interpret stored data and the reader schema to resolve fields, defaults, and promotions without hiding malformed records.
Separate a registry subject, its version history, and schema IDs; choose a compatibility scope and retain the definitions needed for replay.
Choose a partition key for ordering and load distribution, keep its encoded form stable, and test what changes when keys or partition counts change.
Distinguish retained keyed state from full history, account for tombstone expiry, and avoid treating compaction as instant table replacement.
Understand how producer identity and sequences suppress protocol retries, and why a resubmitted business event still needs its own identity.
Read Kafka acknowledgment settings together with the in-sync replica set and minimum ISR, and distinguish acceptance from external completion.
Separate fetched position from durable progress, commit only completed prefixes, and interpret lag with retention and processing state.
Share Kafka partitions among group members, resume from committed progress, and handle unfinished work when ownership changes.
Understand Kafka’s ordering and parallelism boundary, distinguish partition offsets, and plan key placement before changing partition counts.
Retain outgoing telemetry across restarts while accounting for synchronization, upstream memory, retry limits, and destination acknowledgment.
Remove sensitive log values across nested fields, failures, and output branches, and distinguish pattern checks from a privacy guarantee.
Join stack-trace lines into the intended event, isolate stream state, and define timeout, size-limit, and malformed-record behavior.
Follow growing logs with file identity and byte positions, handle rotation explicitly, and separate reading progress from safe delivery.
Check expected deliveries against a source calendar and deadline, including absent files, and track acceptance separately from publication.