A smart grid utility company is designing a real-time data ingestion and transformation pipeline to process telemetry from smart grid sensors. Each sensor transmits a JSON payload times per second. The pipeline must guarantee chronological order of records for each individual sensor. The raw JSON payloads must be converted into Apache Parquet format and stored in Amazon S3, partitioned by sensor ID and hour, with a maximum latency of minutes. Which architecture provides the highest performance and scaling capability with the least operational overhead?
- Ingest data into Amazon Kinesis Data Streams provisioned with shards, using the sensor ID as the partition key. Configure an Amazon Data Firehose stream with the Kinesis stream as the source, enable dynamic partitioning based on the sensor ID and timestamp, use AWS Glue Schema Registry for JSON-to-Parquet conversion, and write to Amazon S3.Answer
- BIngest data into Amazon Kinesis Data Streams configured in On-Demand mode, using the sensor ID as the partition key. Configure an Amazon Data Firehose stream with the Kinesis stream as the source. Use an AWS Lambda function invoked by Firehose to transform the format to Parquet, and write to Amazon S3.
- CIngest data into Amazon SQS Standard queues to decouple the sensors. Configure an AWS Glue ETL job to run every minutes to read from the SQS queues, convert the JSON payloads to Parquet format, partition the data by sensor ID and hour, and write the output to Amazon S3.
- DIngest data directly into Amazon Data Firehose using the DirectPUT API. Configure Firehose to partition the incoming data dynamically by sensor ID and hour, convert the JSON payloads to Parquet format using the AWS Glue Schema Registry, and write the output to Amazon S3.
Answer
Ingest data into Amazon Kinesis Data Streams provisioned with shards, using the sensor ID as the partition key. Configure an Amazon Data Firehose stream with the Kinesis stream as the source, enable dynamic partitioning based on the sensor ID and timestamp, use AWS Glue Schema Registry for JSON-to-Parquet conversion, and write to Amazon S3.
The correct architecture uses Amazon Kinesis Data Streams in provisioned mode with at least shards. This satisfies the throughput limit ( per shard write capacity). Using the sensor ID as the partition key ensures that records for each sensor are sent to the same shard, preserving chronological order. Amazon Data Firehose integrates directly with Kinesis Data Streams, converts JSON payloads to Parquet format using the AWS Glue Schema Registry, and utilizes dynamic partitioning to organize the files in Amazon S3 by sensor ID and hour, meeting all requirements with minimal operational overhead.
Step-by-Step Solution
Key Concept
High-throughput data ingestion scaling limits (Kinesis shard calculations), ordering requirements, and serverless format conversion.