nerdexam
Amazon

DEA-C01 · Question #128

A banking company uses an application to collect large volumes of transactional data. The company uses Amazon Kinesis Data Streams for real-time analytics. The company's application uses the PutRecord

The correct answer is A. Design the application so it can remove duplicates during processing by embedding a unique ID. The data engineer needs to achieve exactly-once delivery for a Kinesis Data Streams pipeline ingesting transactional data from an application, especially considering network outages that can lead to duplicates.

Data Ingestion and Transformation

Question

A banking company uses an application to collect large volumes of transactional data. The company uses Amazon Kinesis Data Streams for real-time analytics. The company's application uses the PutRecord action to send data to Kinesis Data Streams. A data engineer has observed network outages during certain times of day. The data engineer wants to configure exactly-once delivery for the entire processing pipeline. Which solution will meet this requirement?

Options

  • ADesign the application so it can remove duplicates during processing by embedding a unique ID
  • BUpdate the checkpoint configuration of the Amazon Managed Service for Apache Flink
  • CDesign the data source so events are not ingested into Kinesis Data Streams multiple times.
  • DStop using Kinesis Data Streams. Use Amazon EMR instead. Use Apache Flink and Apache

How the community answered

(32 responses)
  • A
    78% (25)
  • B
    13% (4)
  • C
    3% (1)
  • D
    6% (2)

Why each option

The data engineer needs to achieve exactly-once delivery for a Kinesis Data Streams pipeline ingesting transactional data from an application, especially considering network outages that can lead to duplicates.

ADesign the application so it can remove duplicates during processing by embedding a unique IDCorrect

Achieving exactly-once delivery in a streaming pipeline, especially with potential network outages, often relies on the consumer being idempotent. By embedding a unique ID (like a UUID or a combination of event details) in each record at the source, the downstream processing application can detect and discard duplicate records that may arise from retries during network outages, ensuring each record is processed only once.

BUpdate the checkpoint configuration of the Amazon Managed Service for Apache Flink

Updating the checkpoint configuration of Amazon Managed Service for Apache Flink primarily helps Flink applications recover from failures and maintain state consistency during processing, contributing to at-least-once or exactly-once processing within Flink itself, but it does not prevent duplicate ingestion into Kinesis Data Streams from the producer.

CDesign the data source so events are not ingested into Kinesis Data Streams multiple times.

While ideal, ensuring the data source never ingests events multiple times can be challenging or impossible to guarantee in the face of unreliable networks or application failures, and the solution needs to handle duplicates that do occur.

DStop using Kinesis Data Streams. Use Amazon EMR instead. Use Apache Flink and Apache

Switching from Kinesis Data Streams to Amazon EMR (which is a big data processing framework, not a streaming ingestion service) and using Apache Flink and Apache Spark does not inherently solve the exactly-once delivery problem originating from producer retries and network outages, and is an unnecessary platform change.

Concept tested: Exactly-once processing in streaming data pipelines

Source: https://docs.aws.amazon.com/streams/latest/dev/kinesis-api-actions-putrecord.html

Topics

#Exactly-once delivery#Kinesis Data Streams#Data Deduplication#Streaming Data Pipelines

Community Discussion

No community discussion yet for this question.

Full DEA-C01 Practice