Ngân hàng đề — AWS Certified Data Engineer Associate
Tìm thấy 867 câu.
A company is transitioning a legacy application to a data lake on Amazon S3. During the course of the review, a data engineer discovered duplicates in the legacy data. What is the most efficient way for the data engineer to eliminate these duplicates from the legacy application data with minimal operational effort?
-
A
Develop a custom extract, transform, and load (ETL) job in Python using AWS Lambda. Set up the Python dedupe library as a Lambda layer and then leverage the dedupe library to perform data deduplication
-
B
Develop an AWS Glue extract, transform, and load (ETL) job. Convert the Glue DynamicFrame into an Apache Spark DataFrame and leverage the DataFrame.dropDuplicates method for data deduplication
-
C
Develop an AWS Glue extract, transform, and load (ETL) job. Import the Python Pandas library and leverage the DataFrame.dropDuplicates method for data deduplication
-
D
Develop an AWS Glue extract, transform, and load (ETL) job and leverage the FindMatches machine learning (ML) transform for data deduplication
Xem giải thích
Đáp án
*D — Viết một AWS Glue ETL job và dùng phép biến đổi học máy FindMatches
Vì sao đúng
Chữ khoá của đề là "ít công vận hành nhất" cho việc loại bỏ bản ghi trùng trong dữ liệu cũ.
FindMatches là ML transform dựng sẵn của Glue, và nó giải một vấn đề mà dropDuplicates không giải được: bản ghi trùng nhưng không giống hệt nhau.
"Nguyễn Văn A, 123 Lê Lợi, Q1"
"Nguyen Van A, 123 Le Loi, Quan 1" ← cùng một người, chuỗi khác nhau
Dữ liệu từ ứng dụng cũ gần như luôn có kiểu trùng này — viết hoa khác nhau, thiếu dấu, viết tắt, sai chính tả. FindMatches học từ một tập mẫu nhỏ do bạn gán nhãn rồi tự nhận ra các cặp tương đương trên toàn bộ dữ liệu.
Và nó là tính năng có sẵn, không phải mã bạn viết và bảo trì.
Vì sao các phương án khác sai
- B. Dùng
DataFrame.dropDuplicatescủa Spark — chỉ loại được bản ghi giống hệt từng ký tự; bỏ sót toàn bộ nhóm trùng gần đúng. Đây là phương án nhiễu chính vì đây là cách làm quen thuộc nhất. - C. Dùng
dropDuplicatescủa Pandas trong Glue — cùng giới hạn, và Pandas còn không mở rộng được cho dữ liệu lớn vì chạy trên một node. - A. Tự viết ETL bằng Lambda kèm thư viện
dedupe— tốn công nhất: phải đóng gói layer, tự quản lý, và Lambda có giới hạn 15 phút cho một lần chạy.
The technology team at a Wall Street trading firm uses DynamoDB to facilitate high-frequency trading where multiple trades can try and update an item at the same time.
As a data engineer, which of the following actions would you recommend to make sure that only the last updated value of any item is used in the application?
-
A
Use ConsistentRead = true while doing PutItem operation for any item
-
B
Use ConsistentRead = false while doing PutItem operation for any item
-
C
Use ConsistentRead = true while doing UpdateItem operation for any item
-
D
Use ConsistentRead = true while doing GetItem operation for any item
Xem giải thích
Đáp án
*D — Dùng ConsistentRead = true khi thực hiện GetItem
Vì sao đúng
Câu này kiểm tra hai điều, và cả hai phải đúng.
Thứ nhất — ConsistentRead chỉ áp cho thao tác ĐỌC. Nó là tham số của GetItem, Query và Scan. Các thao tác ghi (PutItem, UpdateItem, DeleteItem) không có tham số này — ghi trong DynamoDB vốn đã nhất quán.
Thứ hai — vì sao cần đọc nhất quán mạnh ở đây. DynamoDB nhân bản dữ liệu qua ba Availability Zone. Mặc định, GetItem dùng đọc nhất quán cuối cùng: nó có thể trả về từ một bản sao chưa kịp nhận bản ghi mới nhất.
Đọc nhất quán CUỐI CÙNG: có thể trả về giá trị CŨ (trong khoảng dưới một giây)
Đọc nhất quán MẠNH: luôn trả về giá trị ĐÃ GHI GẦN NHẤT
Với giao dịch tần suất cao ở Phố Wall, đọc trúng giá cũ dù chỉ vài trăm mili giây cũng đủ gây hậu quả — nên phải đặt ConsistentRead = true.
Cái giá: đọc nhất quán mạnh tốn gấp đôi RCU và độ trễ cao hơn một chút.
Vì sao các phương án khác sai
- C.
ConsistentRead = truevớiUpdateItem—UpdateItemlà thao tác ghi, không nhận tham số này. Đây là phương án nhiễu chính. - A và B.
ConsistentReadvớiPutItem— cũng là thao tác ghi, và B còn đặt giá trịfalse.
The data engineering team at a company has set up a workflow to ingest the clickstream data into the raw zone of the S3 data lake. The team wants to run some SQL based data sanity checks on the raw zone of the data lake. The company has hired you as an AWS Certified Data Engineer Associate to build a serverless solution that involves the least amount of development effort. The solution should be cost-effective and easy to maintain.
Which of the following solutions would you build for this use-case?
-
A
Load the incremental raw zone data into RDS on an hourly basis and run the SQL based sanity checks
-
B
Load the incremental raw zone data into Redshift on an hourly basis and run the SQL based sanity checks
-
C
Use Amazon Athena to run SQL based analytics on the data in Amazon S3
-
D
Load the incremental raw zone data into DynamoDB on an hourly basis and run the SQL based sanity checks
Xem giải thích
Đáp án
C — Dùng Amazon Athena để chạy phân tích SQL trên dữ liệu ở Amazon S3
Vì sao đúng
Đề nêu bốn tiêu chí, và Athena đáp ứng cả bốn: serverless, ít công phát triển nhất, tiết kiệm, và dễ bảo trì.
Athena truy vấn trực tiếp dữ liệu đang nằm trên S3 bằng SQL chuẩn — không phải nạp đi đâu cả. Với việc kiểm tra tính đúng đắn của dữ liệu ở vùng thô của data lake, đó là lựa chọn tự nhiên:
- Không có hạ tầng — không cụm, không instance, không lịch bảo trì.
- Trả tiền theo lượng dữ liệu quét — kiểm tra chạy vài lần một ngày thì chi phí gần như không đáng kể.
- Không có bước ETL nào để viết và bảo trì.
Vì sao các phương án khác sai
Cả ba phương án còn lại đều đòi nạp dữ liệu vào một hệ thống khác theo giờ, và điều đó vi phạm cả ba tiêu chí:
- B. Nạp vào Redshift — cụm Redshift chạy liên tục (tốn tiền kể cả khi không dùng), cộng công viết và bảo trì quy trình nạp. Đây là phương án nhiễu chính vì Redshift đúng là công cụ SQL mạnh.
- A. Nạp vào RDS — cơ sở dữ liệu giao dịch, không hợp cho quét khối dữ liệu lớn.
- D. Nạp vào DynamoDB — DynamoDB không dùng SQL; riêng điều này đã loại nó.
A media company has recently migrated their technology infrastructure to AWS Cloud. The data engineering team is centralizing database access credentials to align with IAM based authentication.
Which of the following AWS database engines can be configured with IAM Database Authentication? (Select two)
-
A
RDS PostgreSQL
-
B
RDS SQL Server
-
C
RDS Db2
-
D
RDS Oracle
-
E
RDS MySQL
Xem giải thích
Đáp án
A và E — RDS PostgreSQL và RDS MySQL
Vì sao đúng
IAM Database Authentication cho phép đăng nhập cơ sở dữ liệu bằng token xác thực do IAM sinh ra thay vì mật khẩu — và nó chỉ hỗ trợ hai engine: MySQL và PostgreSQL (cùng bản MariaDB tương thích MySQL, và Aurora của hai engine này).
Cách hoạt động: ứng dụng gọi API để lấy token sống 15 phút, rồi dùng token đó thay cho mật khẩu.
Ba lợi ích:
- Không còn mật khẩu cố định nào trong mã hay tệp cấu hình.
- Quản lý tập trung bằng IAM — thu hồi quyền ở một chỗ là mất quyền ngay.
- Kết nối bắt buộc dùng SSL.
Vì sao các phương án khác sai
- D. RDS Oracle, B. RDS SQL Server, C. RDS Db2 — cả ba không hỗ trợ IAM Database Authentication. Với chúng, cách quản lý thông tin đăng nhập tập trung là dùng AWS Secrets Manager kèm xoay vòng tự động, hoặc tích hợp với Kerberos và Active Directory.
Ghi nhớ
| Engine | IAM Database Authentication |
|---|---|
| MySQL, MariaDB, PostgreSQL (kể cả Aurora) | ✅ |
| Oracle, SQL Server, Db2 | ❌ |
A trading firm collects daily stock trading data from exchanges and stores it in a data warehouse. The data engineering team at the firm needs a solution that streams data directly into the data repository but should also allow SQL-based data modifications when needed. The solution should facilitate complex analytical queries that execute in the fastest possible time. The solution should also offer a business intelligence dashboard that highlights any stock price anomalies.
Which of the following solutions represents the best fit for the given scenario?
-
A
Set up Amazon Kinesis Data Streams to stream data to Amazon S3. Create a business intelligence dashboard by using Amazon QuickSight that has Amazon Athena as a data source
-
B
Set up Amazon Kinesis Data Firehose to stream data to Amazon S3. Create a business intelligence dashboard by using Amazon QuickSight that has Amazon Athena as a data source
-
C
Set up Amazon Kinesis Data Firehose to stream data to Amazon Redshift. Create a business intelligence dashboard by using Amazon QuickSight that has Amazon Redshift as a data source
-
D
Set up Amazon Kinesis Data Streams to stream data to Amazon Redshift. Create a business intelligence dashboard by using Amazon Athena that has Amazon Redshift as a data source
Xem giải thích
Đáp án
C — Dùng Kinesis Data Firehose đẩy dữ liệu vào Amazon Redshift, và dựng bảng điều khiển QuickSight lấy Redshift làm nguồn
Vì sao đúng
Đề nêu bốn yêu cầu, và chỉ phương án C thoả cả bốn:
| Yêu cầu | Vì sao C đạt |
|---|---|
| Đẩy dữ liệu thẳng vào kho | Firehose hỗ trợ Redshift làm đích trực tiếp |
| Sửa đổi dữ liệu bằng SQL khi cần | Redshift là cơ sở dữ liệu thật, có UPDATE và DELETE |
| Truy vấn phân tích phức tạp, nhanh nhất | Redshift lưu theo cột, xử lý song song trên nhiều node |
| Bảng điều khiển BI | QuickSight kết nối trực tiếp tới Redshift |
Yêu cầu thứ hai — sửa dữ liệu bằng SQL — là chỗ loại mọi phương án dựa trên S3: dữ liệu trên S3 là đối tượng bất biến, muốn sửa phải ghi đè cả tệp.
Yêu cầu thứ ba loại tiếp Athena: nó truy vấn được nhưng chậm hơn Redshift cho các truy vấn phức tạp chạy lặp lại.
Vì sao các phương án khác sai
- B và A. Đẩy vào S3, dùng Athena làm nguồn cho QuickSight — không sửa được dữ liệu bằng SQL, và chậm hơn cho phân tích phức tạp. B là phương án nhiễu chính.
- D. Kinesis Data Streams đẩy thẳng vào Redshift, QuickSight dùng Athena trỏ tới Redshift — sai ở hai chỗ: Data Streams không có tích hợp giao hàng trực tiếp tới Redshift như Firehose, và Athena không dùng Redshift làm nguồn dữ liệu theo cách phương án mô tả.
A government healthcare agency receives multiple compressed (gzip) CSV files containing data about contagious diseases for the past month aggregated from all government-managed hospitals. The files are about ~300 GB and are stored in Amazon Glacier Deep Archive. As per the government guidelines, the agency needs to query a portion of this data to prepare a report every year.
Which of the following is the MOST cost-effective way to query this data?
-
A
Load the data into Amazon S3 from Glacier Deep Archive and query the required data with Amazon S3 Select
-
B
Load the data into Amazon S3 from Glacier Deep Archive and query the required data with Amazon Athena
-
C
Load the data to Amazon S3 and query it with Amazon Redshift Spectrum
-
D
Leverage Amazon S3 Select to query data from Glacier Deep Archive directly
Xem giải thích
Đáp án
*A — Khôi phục dữ liệu từ Glacier Deep Archive về S3 rồi truy vấn phần cần thiết bằng Amazon S3 Select
Vì sao đúng
Câu này có hai quyết định, và cả hai đều phải đúng.
Thứ nhất — phải khôi phục dữ liệu trước. Không thể truy vấn trực tiếp trên dữ liệu đang nằm ở Glacier Deep Archive; phải khôi phục về S3 (mất 12–48 giờ) rồi mới truy vấn. Với báo cáo làm mỗi năm một lần, thời gian chờ đó chấp nhận được.
Thứ hai — S3 Select rẻ hơn Athena cho trường hợp này. Đề nói rõ chỉ cần một phần dữ liệu:
| S3 Select | Amazon Athena | |
|---|---|---|
| Phạm vi | Truy vấn trong một đối tượng | Truy vấn trên nhiều tệp, có JOIN, có tổng hợp |
| Cần siêu dữ liệu | Không | Cần bảng trong Glue Data Catalog |
| Chi phí | Rẻ hơn cho việc lọc đơn giản | Cao hơn |
| Hỗ trợ CSV nén gzip | Có | Có |
Với việc lọc một phần dữ liệu ra khỏi các tệp CSV nén, S3 Select là công cụ vừa vặn — không phải dựng catalog, không phải định nghĩa bảng.
Vì sao các phương án khác sai
- D. Dùng S3 Select truy vấn thẳng trên Glacier Deep Archive — không làm được; phải khôi phục trước. Đây là phương án nhiễu chính.
- B. Khôi phục rồi dùng Athena — hoạt động được nhưng đắt hơn và cần thêm bước dựng Glue Data Catalog.
- C. Dùng Redshift Spectrum — đòi có cụm Redshift đang chạy; tốn kém nhất cho một báo cáo mỗi năm.
The data engineering team at an e-commerce company is looking at setting up a data lake on Amazon S3 that uses a columnar storage format that is optimized for fast retrieval of data. The team wants to ensure that the underlying data storage format also supports complex data types.
Which of the following data file formats would you recommend for the given use case?
-
A
XML
-
B
Avro
-
C
Parquet
-
D
ORC
Xem giải thích
Đáp án
D — ORC (Optimized Row Columnar)
Vì sao đúng
ORC đáp ứng cả hai yêu cầu trong đề:
- Lưu theo cột — truy vấn chỉ đọc những cột cần thiết, nên nhanh hơn nhiều so với định dạng theo dòng.
- Hỗ trợ kiểu dữ liệu phức tạp —
struct,list,map,unionđều lưu được nguyên vẹn.
ORC còn có hai đặc điểm giúp tăng tốc truy vấn:
- Chỉ số nội tại — mỗi stripe lưu sẵn giá trị nhỏ nhất, lớn nhất và số lượng, nên bộ máy truy vấn bỏ qua được cả khối dữ liệu không khớp điều kiện.
- Bloom filter tuỳ chọn cho việc lọc theo giá trị cụ thể.
Vì sao các phương án khác sai
- B. Avro — lưu theo dòng, không phải theo cột. Nó tốt cho việc ghi và cho tiến hoá lược đồ, nhưng không tối ưu cho truy vấn phân tích chỉ đọc vài cột.
- A. XML — định dạng văn bản, không nén, không theo cột; kém nhất trong bốn phương án.
Ghi chú về phương án C
Parquet cũng là định dạng cột và cũng hỗ trợ kiểu dữ liệu phức tạp — nên trên thực tế nó đáp ứng đủ hai yêu cầu mà đề nêu, và là định dạng phổ biến hơn ORC trong hệ sinh thái AWS (Athena, Redshift Spectrum, Glue đều tối ưu cho Parquet).
Hai định dạng này rất gần nhau; khác biệt thường được nhắc tới là ORC nén tốt hơn một chút và có chỉ số phong phú hơn, còn Parquet phổ biến hơn trong hệ sinh thái Spark. Bộ đề chấm theo ORC, nhưng khi làm việc thật thì cả hai đều là lựa chọn hợp lý cho data lake dạng cột.
An application needs the output of SELECT query from Amazon Athena to be stored in an Amazon S3 bucket in Apache Parquet format. The data engineer has been advised against creating any additional tables in Athena.
How can this be achieved with the LEAST possible effort?
-
A
Use the CREATE TABLE AS SELECT (CTAS) and INSERT INTO statements in Athena
-
B
Use the SELECT command in Athena
-
C
Use the CREATE TABLE AS SELECT (CTAS) query in Athena
-
D
Use the UNLOAD statement in Athena
Xem giải thích
Đáp án
D — Dùng câu lệnh UNLOAD trong Athena
Vì sao đúng
Ràng buộc quyết định trong đề: không được tạo thêm bảng nào trong Athena.
UNLOAD làm đúng điều đó — nó ghi kết quả của một câu SELECT ra S3 theo định dạng bạn chọn (Parquet, ORC, Avro, JSON, TEXTFILE), và không tạo bảng nào trong Data Catalog:
UNLOAD (SELECT * FROM don_hang WHERE nam = 2024)
TO 's3://bucket-dich/ket-qua/'
WITH (format = 'PARQUET')
Vì sao các phương án khác sai
-
C. Dùng
CREATE TABLE AS SELECT(CTAS) — cũng ghi ra Parquet trên S3, nhưng như tên gọi, nó tạo một bảng mới trong Data Catalog. Vi phạm thẳng ràng buộc của đề. Đây là phương án nhiễu chính, và cặp này đáng nhớ:CTAS UNLOAD Ghi tệp ra S3 ✅ ✅ Tạo bảng mới ✅ Có ❌ Không -
A. Dùng CTAS kèm
INSERT INTO— cũng tạo bảng, và còn thêm bước. -
B. Dùng
SELECTthông thường — kết quả được Athena ghi ra thư mục kết quả truy vấn ở định dạng CSV, không phải Parquet.
The data engineering team at an e-commerce company wants to migrate from Amazon Simple Queue Service (Amazon SQS) Standard queues to FIFO (First-In-First-Out) queues with batching.
Which of the following steps would you have in the migration checklist? (Select three)
-
A
Convert the existing standard queue into a FIFO (First-In-First-Out) queue
-
B
Delete the existing standard queue and recreate it as a FIFO (First-In-First-Out) queue
-
C
Make sure that the name of the FIFO (First-In-First-Out) queue ends with the .fifo suffix
-
D
Make sure that the throughput for the target FIFO (First-In-First-Out) queue does not exceed 300 messages per second
-
E
Make sure that the name of the FIFO (First-In-First-Out) queue is the same as the standard queue
-
F
Make sure that the throughput for the target FIFO (First-In-First-Out) queue does not exceed 3,000 messages per second
Xem giải thích
Đáp án
B, C và F
Vì sao đúng
- B. Xoá hàng đợi standard rồi tạo lại thành FIFO — bắt buộc, vì không chuyển đổi được hàng đợi standard thành FIFO. Loại hàng đợi cố định lúc tạo.
- C. Tên hàng đợi FIFO phải kết thúc bằng hậu tố
.fifo— yêu cầu cú pháp bắt buộc; thiếu là API từ chối. - F. Thông lượng không vượt quá 3.000 thông điệp mỗi giây — đúng con số khi có gộp lô:
300 thao tác/giây × 10 thông điệp mỗi lô = 3.000. Đề nói rõ là FIFO có batching.
Vì sao các phương án khác sai
-
A. Chuyển đổi hàng đợi standard hiện có thành FIFO — không có thao tác này, và nó mâu thuẫn với B.
-
E. Đặt tên hàng đợi FIFO giống hệt hàng đợi standard — không được: tên FIFO bắt buộc có hậu tố
.fifo, nên không thể trùng tên cũ. -
D. Thông lượng không vượt quá 300 thông điệp mỗi giây — đúng con số khi KHÔNG gộp lô, sai trong ngữ cảnh đề. Đây là phương án nhiễu chính và là chỗ phân biệt duy nhất giữa D và F:
Không gộp lô Có gộp lô Trần FIFO 300 thông điệp/giây 3.000 thông điệp/giây
(Ghi chú: FIFO còn có chế độ high throughput nâng trần lên rất cao, nhưng nó nằm ngoài phạm vi câu hỏi này.)
An Internet-of-Things (IoT) company is planning on distributing a master sensor in people's homes to measure the key metrics from its smart devices. In order to provide adjustment commands for these devices, the company would like to have a streaming system that supports ordered data based on the sensor's key and also sustains high throughput messages (thousands of messages per second).
Which of the following AWS services would you recommend for this use-case?
-
A
Amazon Simple Queue Service (Amazon SQS)
-
B
AWS Lambda
-
C
Amazon Kinesis Data Streams
-
D
Amazon Simple Notification Service (Amazon SNS)
Xem giải thích
Đáp án
C — Amazon Kinesis Data Streams
Vì sao đúng
Đề nêu hai yêu cầu, và Kinesis Data Streams là dịch vụ duy nhất đáp ứng cả hai:
- Thứ tự theo khoá của cảm biến — Kinesis dùng partition key để quyết định thông điệp vào shard nào, và thứ tự được bảo đảm trong mỗi shard. Dùng mã cảm biến làm partition key thì mọi thông điệp của một cảm biến đi vào cùng shard và giữ đúng thứ tự — trong khi các cảm biến khác vẫn được xử lý song song.
- Thông lượng cao — hàng nghìn thông điệp mỗi giây; thêm shard là thêm năng lực.
Đây chính là điểm mạnh riêng của Kinesis: thứ tự cục bộ theo khoá cộng song song toàn cục.
Vì sao các phương án khác sai
- A. Amazon SQS — standard queue không bảo đảm thứ tự; FIFO queue thì có nhưng trần thông lượng thấp hơn nhiều (300 hoặc 3.000 thông điệp/giây). Đây là phương án nhiễu chính, và cần nói rõ: SQS FIFO cũng có
MessageGroupIdcho thứ tự theo nhóm, nhưng với "hàng nghìn thông điệp mỗi giây" thì Kinesis phù hợp hơn. - D. Amazon SNS — mô hình xuất bản và đăng ký; không bảo đảm thứ tự và không lưu thông điệp.
- B. AWS Lambda — dịch vụ tính toán, không phải hệ thống truyền tin; nó là bên xử lý dữ liệu từ luồng.