This domain (22%) covers running pipelines day to day: automating them, querying and visualising the output, watching them, fixing them and proving the data is good. Expect troubleshooting scenarios (“the job got slower”, “the query is expensive”, “alerts didn’t fire”) and picks between Athena, Redshift, DataBrew and QuickSight.
Automating data processing
- Orchestrate with Step Functions (serverless, native service integrations) or MWAA (Airflow DAGs); for Glue-only flows use Glue workflows and triggers. See the ingestion notes for the comparison.
- Scripting: Glue (PySpark/Scala/Python), EMR (steps, Spark/Hive scripts, bootstrap actions), Redshift (SQL, stored procedures, scheduled queries), Athena (SQL, saved queries). Know which accept scripts and where the script lives (usually S3).
- SDK and API calls:
boto3(Python) and CLI calls start Glue jobs (StartJobRun), Athena queries (StartQueryExecution, pollGetQueryExecution), Redshift Data API (ExecuteStatement, asynchronous), EMR Serverless job runs and Step Functions executions. Use IAM roles, not keys; wait with polling or.syncintegrations. - Lambda automation: small glue steps, file validation on S3 events, calling APIs, kicking off Glue or Step Functions. Respect the 15-minute limit.
- Events and schedulers: EventBridge rules (event patterns) and Scheduler (cron or rate, time zones, flexible windows, retries, one-time schedules). S3 notifications to EventBridge give pattern-based filtering.
- Repeatable outcomes: parameterise jobs (job arguments, SSM Parameter Store), keep them idempotent, version code in Git and deploy with CI/CD and IaC.
- Consuming and maintaining data APIs: API Gateway with throttling, usage plans and caching in front of Lambda/DynamoDB/Athena; version stages; monitor 4xx/5xx and latency in CloudWatch.
Troubleshooting managed workflows
| Service | Typical failures | First checks |
|---|---|---|
| MWAA | DAG not showing; task fails; scheduler lag | DAG parse errors in the scheduler log group, requirements.txt/plugins version conflicts, execution role permissions, VPC routes (NAT or endpoints) for workers, environment size |
| Step Functions | State fails, timeouts | Execution history (which state, error and cause), IAM role of the state machine, Retry/Catch, TimeoutSeconds, payload size (256 KB), enable logging to CloudWatch Logs |
| Glue | Job fails/slow | Run logs and Spark UI (event logs), connection network, script errors, memory, concurrency limits |
| Lambda | Throttles, timeouts | Reserved concurrency, memory/timeout, DLQ, partial batch failures |
| EMR | Step fails, slow | Step logs in S3 (and CloudWatch), YARN resource manager, container killed (memory), Spot interruptions |
Querying with Amazon Athena
Serverless SQL (Trino/Presto engine) on S3 with the Glue Data Catalog. You pay per TB scanned (provisioned capacity reservations also exist), so cost control is about scanning less.
Reduce cost and time
- Store data in Parquet or ORC (columnar).
- Partition by common filter columns, and filter on them (
WHERE dt = ...), or use partition projection. - Compress and use well-sized files (avoid thousands of small ones).
- Select only needed columns, not
SELECT *. - Use CTAS (
CREATE TABLE AS SELECT) to convert/compact/repartition (can output Parquet, bucketed, partitioned);INSERT INTOto append. - Use workgroups for per-team result locations, query limits (bytes scanned per query or per workgroup), encryption settings and cost tracking by tags.
Other features
- Views (logical, stored in the catalog) hide complexity and can restrict columns.
- Federated queries use Lambda data source connectors to query RDS, DynamoDB, Redshift, OpenSearch, CloudWatch Logs, on-premises sources and more, joined with S3 data.
- Athena for Apache Spark (notebooks): interactive PySpark for exploration in the console, no cluster to manage.
- Iceberg tables: ACID,
MERGE, time travel,OPTIMIZE(compaction) andVACUUM. - Prepared statements, query result reuse and results stored in the workgroup’s S3 location.
- Common errors:
HIVE_BAD_DATAorHIVE_PARTITION_SCHEMA_MISMATCH(schema/partition mismatch, fix catalog or repair), throttling (too many concurrent queries),HIVE_CURSOR_ERROR(corrupt file), slow queries from small files or no partition filter.
Provisioned vs serverless analytics
| Serverless (Athena, Redshift Serverless, EMR Serverless) | Provisioned (Redshift RA3, EMR on EC2) | |
|---|---|---|
| Ops | None to little | You size, scale and patch |
| Cost model | Per use | Per hour, discounts via reservation |
| Best for | Ad hoc, spiky, unpredictable | Steady, heavy, tuned workloads |
| Control | Limited | Fine-grained |
If the scenario says “occasional”, “unpredictable”, “no infrastructure to manage” choose serverless. If it says “24/7 steady heavy workload” and cost, consider provisioned with reservations.
Cleaning, preparing and visualising
AWS Glue DataBrew
Visual, no-code data preparation with 250+ built-in transformations (recipes). Concepts: dataset, project (interactive session), recipe (versioned steps), job (runs a recipe on the full dataset), data profile job (statistics, duplicates, missing values, correlations, outliers).
- Good for: analysts cleaning data, standardising formats, handling nulls, masking and encrypting PII columns (hashing, substitution, shuffling), deduplication, pivoting.
- Data quality rules (rulesets) check completeness and validity per dataset, and can be run with profile jobs.
- Output to S3 (CSV, Parquet and others) or databases, and it can be scheduled or run from Step Functions.
- Choose DataBrew for no-code and quick profiling; choose Glue ETL for code at scale; SageMaker Data Wrangler / Canvas for ML-oriented prep in the SageMaker UI.
Amazon QuickSight
BI service for dashboards.
- Sources: Athena, Redshift, RDS, S3, OpenSearch, SaaS and files.
- SPICE is the in-memory engine: imported data is fast and doesn’t hit the source each time (refresh on a schedule). Direct query reads live data.
- Features: Q (natural language questions), embedded analytics, row-level and column-level security, ML insights/anomaly detection, paginated reports, sharing to users and groups, and VPC connections for private data.
- Standard vs Enterprise editions: Enterprise adds row-level security, encryption at rest, Active Directory integration and VPC connections.
- If the question says “visualise” and “business users”, think QuickSight; for profile-style charts of data quality, DataBrew.
- Amazon Managed Grafana is for operational/time-series metrics dashboards (CloudWatch, Prometheus, OpenSearch), not business BI.
Analysis techniques and SQL
Know the language of aggregate and window operations:
GROUP BY,HAVING,ROLLUP/CUBE; rolling averages viaAVG(x) OVER (ORDER BY d ROWS BETWEEN 6 PRECEDING AND CURRENT ROW); ranking withROW_NUMBER,RANK;LAG/LEADfor period over period.- Pivoting: turning rows into columns (
PIVOTin Redshift, conditional aggregation withCASEin Athena); unpivot the reverse. - Joins: inner, left, full, cross; join on matching types and put the smaller table where the engine expects it; avoid exploding joins on non-unique keys.
- Cleansing: remove duplicates (
ROW_NUMBER() ... = 1), fill or drop nulls, standardise case, trim, cast types, handle outliers, parse dates. - Notebooks (Jupyter on SageMaker, EMR Studio, Athena Spark) help for exploration; Lambda can do small row-level cleaning.
Monitoring and maintaining pipelines
Logging and metrics
- CloudWatch Logs: log groups and streams for Lambda, Glue (
/aws-glue/jobs/output,/error, continuous logging), EMR (via the CloudWatch agent or S3), MSK, Step Functions (execution logs), API Gateway. Set retention (default never expires, a cost trap) and encryption with KMS. - CloudWatch Logs Insights: query language for ad hoc log analysis (
fields,filter,stats,parse). - Metric filters turn log patterns into metrics, and subscription filters stream logs to Lambda, Kinesis, Firehose or OpenSearch. Export to S3 for long-term, cheaper storage and Athena queries.
- CloudWatch metrics and alarms: Glue (job failures, DPU use), Kinesis (
GetRecords.IteratorAgeMillisecondsshows consumer lag;WriteProvisionedThroughputExceeded), Lambda (errors, throttles, duration, iterator age), Redshift (CPU, disk space, query duration, WLM queue), EMR (YARN memory, HDFS use), DynamoDB (throttled requests, consumed capacity), MSK (consumer lag, disk). Alarm actions notify SNS or call Lambda/Systems Manager. - EventBridge events for state changes (Glue job state change, crawler status, Step Functions status, EMR step failures) trigger notifications and automated retries.
- CloudTrail: records API calls (who did what, when, from where). Management events are on by default for 90 days of event history; create a trail to S3 for long-term, and enable data events (S3 object-level, Lambda invoke, DynamoDB item-level) which are off by default.
- Macie monitors S3 for sensitive data and bucket exposure.
- Notifications: SNS topics (email, SMS, Lambda, HTTP, SQS fan-out) for alerts; SQS to queue failed work.
- Cost: AWS Budgets (alerts when spend crosses a threshold) and Cost Explorer (analyse spend, tags); use cost-allocation tags per pipeline.
Analysing logs at scale
| Need | Tool |
|---|---|
| Ad hoc search of recent application logs | CloudWatch Logs Insights |
| Cheap, long-term SQL over archived logs (CloudTrail, ALB, VPC Flow Logs, S3 access logs) | Athena over S3 |
| Interactive search and dashboards over logs | OpenSearch Service (via subscription filter or Firehose) |
| Massive big-data application logs | EMR (Spark) |
| Centralised audit queries over CloudTrail events | CloudTrail Lake |
Troubleshooting performance
- Glue: look at the Spark UI and job metrics. Many small files (group files), skew (one task far longer: repartition, salt keys), too few workers (enable auto scaling), JDBC reads single-threaded, shuffle spill (larger worker types).
- EMR: executors out of memory (tune
spark.executor.memory, partitions), underused cluster (managed scaling), slow S3 listing (fewer files), Spot reclamation (use On-Demand for core). - Redshift: check
SVL_QUERY_REPORT,STL_ALERT_EVENT_LOG, Query monitoring and the Advisor; fixes are better distribution/sort keys,ANALYZE, fewer wideSELECT *, WLM tuning, concurrency scaling, materialized views, resizing; high disk use means unvacuumed or skewed data; disk-based (spilled) queries need more memory. - Athena: partition and format fixes above.
- Kinesis: rising iterator age means consumers are behind: add consumer capacity (Lambda parallelization, more KCL workers), shards, enhanced fan-out.
- DynamoDB: throttles and hot keys; on-demand or better keys; use Contributor Insights to find hot keys.
- Lambda: out of memory/timeout; add memory, batch size, concurrency; RDS connection exhaustion fixed with RDS Proxy.
Ensuring data quality
Dimensions and techniques
| Dimension | Meaning | Example check |
|---|---|---|
| Completeness | Required data is present | No null customer_id, row counts match the source |
| Consistency | Same fact agrees across systems | Totals match between source and warehouse |
| Accuracy | Values are correct | Prices within range, valid country codes |
| Integrity | Relationships hold | Every order has a matching customer (referential) |
| Uniqueness / timeliness | No duplicates; data is fresh | Primary key unique; yesterday’s partition exists |
- Profiling looks at the data first (null %, distinct counts, distributions, patterns, min/max) so you can write rules. Sampling (random or stratified) lets you inspect big datasets cheaply, but small samples can miss rare errors.
- Skew (uneven value distribution) is detected by profiling and mitigated with salting, better keys, repartitioning, and broadcast joins. Don’t confuse with data quality, but profiling helps find it.
- Validation in-flight: check during processing so bad records are routed away (a dead-letter/quarantine S3 prefix) and good data continues.
AWS Glue Data Quality
Built on the open-source Deequ. Rules are written in DQDL (Data Quality Definition Language): IsComplete "id", Uniqueness "id" > 0.99, ColumnValues "age" between 0 and 120, RowCount > 0, ReferentialIntegrity, DataFreshness.
- Evaluate on catalog tables (a ruleset attached to a table) or inside Glue ETL jobs with the Evaluate Data Quality transform, which can fail the job or route bad rows.
- Recommendation feature generates rules from the data.
- Results go to the console, CloudWatch metrics, and EventBridge events, so you can alarm or stop a pipeline; anomaly detection learns normal behaviour.
- DataBrew rulesets do similar checks for no-code users. Empty fields:
IsCompleteor DataBrewMissing valuesrules. - Gate a pipeline: a Step Functions choice state looks at the quality result before publishing.
- Investigating consistency: compare row counts and checksums between source and target, run DataBrew profile jobs, check for duplicates, and look at lineage.
Exam checklist
- Can you cut an Athena bill (Parquet, partition, CTAS, workgroup limits)?
- Do you know when to pick Athena, Redshift, EMR, Glue, DataBrew, QuickSight?
- Can you read a symptom (iterator age, throttles, skew, small files) and name the fix?
- Do you know which CloudWatch/CloudTrail/EventBridge pieces give alarms, logs, audit and automation?
- Can you choose between Logs Insights, Athena, OpenSearch, EMR and CloudTrail Lake for log analysis?
- Do you know the data quality dimensions, DQDL rules and where checks run in a pipeline?
- Do you remember CloudTrail data events are off by default, and log group retention defaults to forever?