tảng băng Apache là một định dạng bảng mở cho các bộ dữ liệu phân tích rất lớn, nắm bắt thông tin siêu dữ liệu về trạng thái của các bộ dữ liệu khi chúng phát triển và thay đổi theo thời gian. Nó thêm các bảng vào các công cụ tính toán bao gồm Spark, Trino, PrestoDB, Flink và Hive bằng cách sử dụng định dạng bảng hiệu suất cao hoạt động giống như bảng SQL. Iceberg đã trở nên rất phổ biến nhờ hỗ trợ các giao dịch ACID trong hồ dữ liệu và các tính năng như tiến hóa lược đồ và phân vùng, du hành thời gian và khôi phục.
Tích hợp Apache Iceberg được hỗ trợ bởi các dịch vụ phân tích AWS bao gồm Amazon EMR, amazon Athenavà Keo AWS. Amazon EMR có thể cung cấp các cụm có Spark, Hive, Trino và Flink có thể chạy Iceberg. Bắt đầu với Amazon EMR phiên bản 6.5.0, bạn có thể sử dụng Iceberg với cụm EMR của bạn mà không yêu cầu một hành động bootstrap. Vào đầu năm 2022, AWS đã công bố tính khả dụng rộng rãi của các giao dịch Athena ACID do Apache Iceberg cung cấp. phát hành gần đây Công cụ truy vấn Athena phiên bản 3 cung cấp khả năng tích hợp tốt hơn với định dạng bảng Iceberg. AWS Glue 3.0 trở lên hỗ trợ khung Apache Iceberg cho hồ dữ liệu.
Trong bài đăng này, chúng tôi thảo luận về những gì khách hàng muốn trong các kho dữ liệu hiện đại và cách Apache Iceberg giúp giải quyết các nhu cầu của khách hàng. Sau đó, chúng tôi hướng dẫn một giải pháp để xây dựng hồ dữ liệu Iceberg hiệu suất cao và đang phát triển trên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) và xử lý dữ liệu gia tăng bằng cách chạy các câu lệnh SQL chèn, cập nhật và xóa. Cuối cùng, chúng tôi chỉ cho bạn cách điều chỉnh hiệu suất của quy trình để cải thiện hiệu suất đọc và ghi.
Cách Apache Iceberg giải quyết những gì khách hàng muốn trong các kho dữ liệu hiện đại
Ngày càng có nhiều khách hàng xây dựng kho dữ liệu, với dữ liệu có cấu trúc và không có cấu trúc, để hỗ trợ nhiều người dùng, ứng dụng và công cụ phân tích. Nhu cầu về hồ dữ liệu để hỗ trợ cơ sở dữ liệu như các tính năng như giao dịch ACID, cập nhật và xóa cấp bản ghi, du hành thời gian và khôi phục ngày càng tăng. Apache Iceberg được thiết kế để hỗ trợ các tính năng này trên các kho dữ liệu quy mô petabyte tiết kiệm chi phí trên Amazon S3.
Apache Iceberg đáp ứng nhu cầu của khách hàng bằng cách nắm bắt thông tin siêu dữ liệu phong phú về tập dữ liệu tại thời điểm các tệp dữ liệu riêng lẻ được tạo. Có ba lớp trong kiến trúc của bảng Iceberg: danh mục Iceberg, lớp siêu dữ liệu và lớp dữ liệu, như được mô tả trong hình sau (nguồn).
Danh mục Iceberg lưu trữ con trỏ siêu dữ liệu tới tệp siêu dữ liệu của bảng hiện tại. Khi một truy vấn được chọn đang đọc bảng Iceberg, trước tiên, công cụ truy vấn sẽ chuyển đến danh mục Iceberg, sau đó truy xuất vị trí của tệp siêu dữ liệu hiện tại. Bất cứ khi nào có một bản cập nhật cho bảng Iceberg, một ảnh chụp nhanh mới của bảng sẽ được tạo và con trỏ siêu dữ liệu trỏ đến tệp siêu dữ liệu của bảng hiện tại.
Sau đây là ví dụ về danh mục Iceberg triển khai AWS Glue. Bạn có thể thấy tên cơ sở dữ liệu, vị trí (đường dẫn S3) của bảng Iceberg và vị trí siêu dữ liệu.
Lớp siêu dữ liệu có ba loại tệp: tệp siêu dữ liệu, danh sách tệp kê khai và tệp kê khai theo cấu trúc phân cấp. Ở trên cùng của hệ thống phân cấp là tệp siêu dữ liệu, lưu trữ thông tin về lược đồ của bảng, thông tin phân vùng và ảnh chụp nhanh. Ảnh chụp nhanh trỏ đến danh sách tệp kê khai. Danh sách tệp kê khai có thông tin về từng tệp kê khai tạo nên ảnh chụp nhanh, chẳng hạn như vị trí của tệp kê khai, các phân vùng chứa tệp kê khai và giới hạn dưới và trên của các cột phân vùng cho các tệp dữ liệu mà nó theo dõi. Tệp kê khai theo dõi các tệp dữ liệu cũng như các chi tiết bổ sung về từng tệp, chẳng hạn như định dạng tệp. Cả ba tệp đều hoạt động trong một hệ thống phân cấp để theo dõi ảnh chụp nhanh, lược đồ, phân vùng, thuộc tính và tệp dữ liệu trong bảng Iceberg.
Lớp dữ liệu có các tệp dữ liệu riêng lẻ của bảng Iceberg. Iceberg hỗ trợ nhiều định dạng tệp bao gồm Parquet, ORC và Avro. Vì bảng Iceberg theo dõi các tệp dữ liệu riêng lẻ thay vì chỉ trỏ đến vị trí phân vùng chứa các tệp dữ liệu nên nó tách biệt các thao tác ghi khỏi thao tác đọc. Bạn có thể ghi các tệp dữ liệu bất kỳ lúc nào, nhưng chỉ cam kết thay đổi một cách rõ ràng, điều này sẽ tạo ra một phiên bản mới của ảnh chụp nhanh và tệp siêu dữ liệu.
Tổng quan về giải pháp
Trong bài đăng này, chúng tôi sẽ hướng dẫn bạn một giải pháp để xây dựng kho dữ liệu Apache Iceberg hiệu suất cao trên Amazon S3; xử lý dữ liệu gia tăng với các câu lệnh SQL chèn, cập nhật và xóa; và điều chỉnh bảng Iceberg để cải thiện hiệu suất đọc và ghi. Sơ đồ sau đây minh họa kiến trúc giải pháp.
Để chứng minh giải pháp này, chúng tôi sử dụng Đánh giá của khách hàng Amazon tập dữ liệu trong nhóm S3 (s3://amazon-reviews-pds/parquet/
). Trong trường hợp sử dụng thực tế, đó sẽ là dữ liệu thô được lưu trữ trong bộ chứa S3 của bạn. Chúng ta có thể kiểm tra kích thước dữ liệu bằng đoạn mã sau trong Giao diện dòng lệnh AWS (AWS CLI):
Tổng số đối tượng là 430 và tổng kích thước là 47.4 GiB.
Để thiết lập và kiểm tra giải pháp này, chúng tôi hoàn thành các bước cấp cao sau:
- Thiết lập bộ chứa S3 trong vùng được tuyển chọn để lưu trữ dữ liệu đã chuyển đổi ở định dạng bảng Iceberg.
- Khởi chạy cụm EMR với các cấu hình phù hợp cho Apache Iceberg.
- Tạo sổ ghi chép trong EMR Studio.
- Định cấu hình phiên Spark cho Apache Iceberg.
- Chuyển đổi dữ liệu sang định dạng bảng Iceberg và di chuyển dữ liệu đến vùng giám tuyển.
- Chạy các truy vấn chèn, cập nhật và xóa trong Athena để xử lý dữ liệu gia tăng.
- Thực hiện điều chỉnh hiệu suất.
Điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn phải có Tài khoản AWS với một Quản lý truy cập và nhận dạng AWS (IAM) có đủ quyền truy cập để cung cấp các tài nguyên cần thiết.
Thiết lập bộ chứa S3 cho dữ liệu Iceberg trong vùng được tuyển chọn trong kho dữ liệu của bạn
Chọn Khu vực mà bạn muốn tạo bộ chứa S3 và cung cấp một tên duy nhất:
Khởi chạy cụm EMR để chạy các công việc Iceberg bằng Spark
Bạn có thể tạo một cụm EMR từ Bảng điều khiển quản lý AWS, Amazon EMR CLI hoặc Bộ công cụ phát triển đám mây AWS (AWS CDK). Đối với bài đăng này, chúng tôi sẽ hướng dẫn bạn cách tạo cụm EMR từ bảng điều khiển.
- Trên bảng điều khiển Amazon EMR, hãy chọn Tạo cụm.
- Chọn Tùy chọn cấp cao.
- Trong Cấu hình phần mềm, chọn bản phát hành Amazon EMR mới nhất. Kể từ tháng 2023 năm 6.9.0, bản phát hành mới nhất là 6.5.0. Iceberg yêu cầu phiên bản XNUMX trở lên.
- Chọn JupyterDoanh nghiệpCổng và Spark như phần mềm để cài đặt.
- Trong Chỉnh sửa cài đặt phần mềm, lựa chọn Nhập cấu hình và nhập
[{"classification":"iceberg-defaults","properties":{"iceberg.enabled":true}}]
. - Để các cài đặt khác ở chế độ mặc định và chọn Sau.
- Trong phần cứng, hãy sử dụng cài đặt mặc định.
- Chọn Sau.
- Trong Tên cụm, nhập tên. Chúng tôi sử dụng
iceberg-blog-cluster
. - Giữ nguyên các cài đặt còn lại và chọn Sau.
- Chọn Tạo cụm.
Tạo sổ ghi chép trong EMR Studio
Bây giờ chúng tôi sẽ hướng dẫn bạn cách tạo sổ ghi chép trong EMR Studio từ bảng điều khiển.
- Trên bảng điều khiển IAM, tạo vai trò dịch vụ EMR Studio.
- Trên bảng điều khiển Amazon EMR, hãy chọn Studio EMR.
- Chọn Bắt đầu.
Sản phẩm Bắt đầu trang xuất hiện trong một tab mới.
- Chọn Tạo Studio trong tab mới.
- Nhập tên. Chúng tôi sử dụng iceberg-studio.
- Chọn cùng một VPC và mạng con làm mạng con cho cụm EMR và nhóm bảo mật mặc định.
- Chọn Quản lý truy cập và nhận dạng AWS (IAM) để xác thực và chọn vai trò dịch vụ EMR Studio mà bạn vừa tạo.
- Chọn một đường dẫn S3 cho Sao lưu không gian làm việc.
- Chọn Tạo Studio.
- Sau khi Studio được tạo, hãy chọn URL truy cập Studio.
- Trên bảng điều khiển EMR Studio, chọn Tạo không gian làm việc.
- Nhập tên cho Không gian làm việc của bạn. Chúng tôi sử dụng
iceberg-workspace
. - Mở rộng Cấu hình nâng cao Và chọn Đính kèm Không gian làm việc vào cụm EMR.
- Chọn cụm EMR bạn đã tạo trước đó.
- Chọn Tạo không gian làm việc.
- Chọn tên Workspace để mở tab mới.
Trong ngăn điều hướng, có một sổ ghi chép có cùng tên với Không gian làm việc. Trong trường hợp của chúng tôi, đó là không gian làm việc tảng băng trôi.
- Mở sổ ghi chép.
- Khi được nhắc chọn kernel, hãy chọn Spark.
Định cấu hình phiên Spark cho Apache Iceberg
Sử dụng mã sau đây, cung cấp tên bộ chứa S3 của riêng bạn:
Điều này đặt các cấu hình phiên Spark sau:
- spark.sql.catalog.demo – Đăng ký danh mục Spark có tên demo, sử dụng plugin danh mục Iceberg Spark.
- spark.sql.catalog.demo.catalog-impl – Danh mục Spark demo sử dụng AWS Glue làm danh mục vật lý để lưu trữ thông tin bảng và cơ sở dữ liệu Iceberg.
- spark.sql.catalog.demo.warehouse – Danh mục Spark demo lưu trữ tất cả các tệp dữ liệu và siêu dữ liệu của Iceberg theo đường dẫn gốc được xác định bởi thuộc tính này:
s3://iceberg-curated-blog-data
. - spark.sql.extensions – Thêm hỗ trợ cho các tiện ích mở rộng Iceberg Spark SQL, cho phép bạn chạy các quy trình Iceberg Spark và một số lệnh SQL chỉ dành cho Iceberg (bạn sử dụng điều này trong bước sau).
- spark.sql.catalog.demo.io-impl – Iceberg cho phép người dùng ghi dữ liệu lên Amazon S3 thông qua S3FileIO. Danh mục dữ liệu AWS Glue theo mặc định sử dụng FileIO này và các danh mục khác có thể tải FileIO này bằng cách sử dụng thuộc tính danh mục io-impl.
Chuyển đổi dữ liệu sang định dạng bảng Iceberg
Bạn có thể sử dụng Spark trên Amazon EMR hoặc Athena để tải bảng Iceberg. Trong phiên Spark của sổ ghi chép EMR Studio Workspace, hãy chạy các lệnh sau để tải dữ liệu:
Sau khi chạy mã, bạn sẽ tìm thấy hai tiền tố được tạo trong đường dẫn S3 kho dữ liệu của mình (s3://iceberg-curated-blog-data/reviews.db/all_reviews
): dữ liệu và siêu dữ liệu.
Xử lý dữ liệu gia tăng bằng cách sử dụng chèn, cập nhật và xóa các câu lệnh SQL trong Athena
Athena là một công cụ truy vấn không có máy chủ mà bạn có thể sử dụng để thực hiện các tác vụ đọc, ghi, cập nhật và tối ưu hóa đối với các bảng Iceberg. Để chứng minh cách định dạng hồ dữ liệu Apache Iceberg hỗ trợ nhập dữ liệu gia tăng, chúng tôi chạy chèn, cập nhật và xóa các câu lệnh SQL trên hồ dữ liệu.
Điều hướng đến bảng điều khiển Athena và chọn Trình chỉnh sửa truy vấn. Nếu đây là lần đầu tiên bạn sử dụng trình chỉnh sửa truy vấn Athena, bạn cần định cấu hình vị trí kết quả truy vấn thành nhóm S3 mà bạn đã tạo trước đó. Bạn sẽ có thể thấy rằng bảng reviews.all_reviews có sẵn để truy vấn. Chạy truy vấn sau để xác minh rằng bạn đã tải thành công bảng Iceberg:
Xử lý dữ liệu gia tăng bằng cách chạy các câu lệnh SQL chèn, cập nhật và xóa:
Điều chỉnh hiệu suất
Trong phần này, chúng ta sẽ tìm hiểu các cách khác nhau để cải thiện hiệu suất đọc và ghi của Apache Iceberg.
Định cấu hình thuộc tính bảng Apache Iceberg
Apache Iceberg là một định dạng bảng và nó hỗ trợ các thuộc tính bảng để định cấu hình hành vi của bảng như đọc, ghi và danh mục. Bạn có thể cải thiện hiệu suất đọc và ghi trên các bảng Iceberg bằng cách điều chỉnh các thuộc tính của bảng.
Ví dụ: nếu bạn nhận thấy rằng mình ghi quá nhiều tệp nhỏ cho một bảng Iceberg, bạn có thể định cấu hình kích thước tệp ghi để ghi ít tệp hơn nhưng có kích thước lớn hơn, nhằm giúp cải thiện hiệu suất truy vấn.
Bất động sản | Mặc định | Mô tả |
write.target-file-size-byte | 536870912 (512 MB) | Kiểm soát kích thước của các tệp được tạo để nhắm mục tiêu khoảng nhiều byte này |
Sử dụng đoạn mã sau để thay đổi định dạng bảng:
Phân vùng và sắp xếp
Để làm cho truy vấn chạy nhanh, đọc càng ít dữ liệu càng tốt. Iceberg tận dụng siêu dữ liệu phong phú mà nó nắm bắt được tại thời điểm ghi và tạo điều kiện thuận lợi cho các kỹ thuật như lập kế hoạch quét, phân vùng, cắt tỉa và thống kê cấp độ cột chẳng hạn như giá trị tối thiểu/tối đa để bỏ qua các tệp dữ liệu không có bản ghi khớp. Chúng tôi hướng dẫn bạn cách lập kế hoạch quét truy vấn và phân vùng hoạt động trong Iceberg và cách chúng tôi sử dụng chúng để cải thiện hiệu suất truy vấn.
Lập kế hoạch quét truy vấn
Đối với một truy vấn nhất định, bước đầu tiên trong công cụ truy vấn là lập kế hoạch quét, đây là quá trình tìm các tệp trong bảng cần thiết cho một truy vấn. Việc lập kế hoạch trong bảng Iceberg rất hiệu quả vì siêu dữ liệu phong phú của Iceberg có thể được sử dụng để cắt bớt các tệp siêu dữ liệu không cần thiết, ngoài việc lọc các tệp dữ liệu không chứa dữ liệu phù hợp. Trong các thử nghiệm của mình, chúng tôi đã quan sát thấy Athena đã quét 50% hoặc ít hơn dữ liệu cho một truy vấn nhất định trên bảng Iceberg so với dữ liệu gốc trước khi chuyển đổi sang định dạng Iceberg.
Có hai loại lọc:
- Lọc siêu dữ liệu – Iceberg sử dụng hai cấp siêu dữ liệu để theo dõi các tệp trong ảnh chụp nhanh: danh sách tệp kê khai và tệp kê khai. Đầu tiên, nó sử dụng danh sách tệp kê khai, danh sách này hoạt động như một chỉ mục của các tệp kê khai. Trong quá trình lập kế hoạch, Iceberg lọc các tệp kê khai bằng cách sử dụng phạm vi giá trị phân vùng trong danh sách tệp kê khai mà không cần đọc tất cả các tệp kê khai. Sau đó, nó sử dụng các tệp kê khai đã chọn để lấy các tệp dữ liệu.
- Lọc dữ liệu – Sau khi chọn danh sách tệp kê khai, Iceberg sử dụng dữ liệu phân vùng và thống kê cấp cột cho từng tệp dữ liệu được lưu trữ trong tệp kê khai để lọc tệp dữ liệu. Trong quá trình lập kế hoạch, các vị từ truy vấn được chuyển đổi thành các vị từ trên dữ liệu phân vùng và được áp dụng trước tiên để lọc các tệp dữ liệu. Sau đó, các thống kê cột như số lượng giá trị cấp độ cột, số lượng null, giới hạn dưới và giới hạn trên được sử dụng để lọc ra các tệp dữ liệu không thể khớp với vị từ truy vấn. Bằng cách sử dụng giới hạn trên và dưới để lọc tệp dữ liệu tại thời điểm lập kế hoạch, Iceberg cải thiện đáng kể hiệu suất truy vấn.
Phân vùng và sắp xếp
Phân vùng là một cách để nhóm các bản ghi có cùng giá trị cột chính lại với nhau bằng văn bản. Lợi ích của việc phân vùng là các truy vấn nhanh hơn chỉ truy cập một phần dữ liệu, như đã giải thích trước đó trong lập kế hoạch quét truy vấn: lọc dữ liệu. Iceberg làm cho việc phân vùng trở nên đơn giản bằng cách hỗ trợ phân vùng ẩn, theo cách mà Iceberg tạo ra các giá trị phân vùng bằng cách lấy một giá trị cột và tùy chọn chuyển đổi nó.
Trong trường hợp sử dụng của chúng tôi, trước tiên chúng tôi chạy truy vấn sau trên bảng Iceberg không được phân vùng. Sau đó, chúng tôi phân vùng bảng Iceberg theo danh mục đánh giá, sẽ được sử dụng trong truy vấn điều kiện WHERE để lọc ra các bản ghi. Với phân vùng, truy vấn có thể quét ít dữ liệu hơn nhiều. Xem đoạn mã sau:
Chạy câu lệnh chọn sau trên bảng all_reviews không được phân vùng so với bảng được phân vùng để thấy sự khác biệt về hiệu suất:
Bảng sau đây cho thấy sự cải thiện hiệu suất của phân vùng dữ liệu, với hiệu suất được cải thiện khoảng 50% và dữ liệu được quét ít hơn 70%.
Tên tập dữ liệu | Bộ dữ liệu không được phân vùng | Bộ dữ liệu được phân vùng |
Thời gian chạy (giây) | 8.20 | 4.25 |
Dữ liệu đã quét (MB) | 131.55 | 33.79 |
Lưu ý rằng thời gian chạy là thời gian chạy trung bình với nhiều lần chạy trong thử nghiệm của chúng tôi.
Chúng tôi đã thấy cải thiện hiệu suất tốt sau khi phân vùng. Tuy nhiên, điều này có thể được cải thiện hơn nữa bằng cách sử dụng số liệu thống kê cấp cột từ tệp kê khai Iceberg. Để sử dụng thống kê cấp độ cột một cách hiệu quả, bạn muốn sắp xếp thêm các bản ghi của mình dựa trên các mẫu truy vấn. Sắp xếp toàn bộ tập dữ liệu bằng cách sử dụng các cột thường được sử dụng trong truy vấn sẽ sắp xếp lại dữ liệu theo cách sao cho mỗi tệp dữ liệu kết thúc với một phạm vi giá trị duy nhất cho các cột cụ thể. Nếu các cột này được sử dụng trong điều kiện truy vấn, nó cho phép các công cụ truy vấn tiếp tục bỏ qua các tệp dữ liệu, do đó cho phép truy vấn nhanh hơn nữa.
Sao chép khi ghi so với đọc khi hợp nhất
Khi triển khai cập nhật và xóa trên các bảng Iceberg trong kho dữ liệu, có hai cách tiếp cận được xác định bởi các thuộc tính của bảng Iceberg:
- Sao chép trên ghi – Với cách làm này, khi bảng Iceberg có thay đổi, cập nhật hoặc xóa, các tệp dữ liệu liên quan đến bản ghi bị ảnh hưởng sẽ được sao chép và cập nhật. Các bản ghi sẽ được cập nhật hoặc xóa khỏi các tệp dữ liệu trùng lặp. Ảnh chụp nhanh mới của bảng Iceberg sẽ được tạo và trỏ đến phiên bản mới hơn của tệp dữ liệu. Điều này làm cho tổng thể ghi chậm hơn. Có thể có những tình huống cần ghi đồng thời với các xung đột nên việc thử lại phải xảy ra, điều này làm tăng thời gian ghi nhiều hơn. Mặt khác, khi đọc dữ liệu, không cần thêm quy trình nào. Truy vấn sẽ lấy dữ liệu từ phiên bản mới nhất của tệp dữ liệu.
- Hợp nhất khi đọc – Với cách làm này, khi có cập nhật hoặc xóa trên bảng Iceberg, các tệp dữ liệu hiện có sẽ không bị ghi lại; thay vào đó, các tệp xóa mới sẽ được tạo để theo dõi các thay đổi. Đối với các lần xóa, một tệp xóa mới sẽ được tạo với các bản ghi đã xóa. Khi đọc bảng Iceberg, tệp xóa sẽ được áp dụng cho dữ liệu được truy xuất để lọc ra các bản ghi xóa. Đối với các bản cập nhật, một tệp xóa mới sẽ được tạo để đánh dấu các bản ghi được cập nhật là đã xóa. Sau đó, một tệp mới sẽ được tạo cho các bản ghi đó nhưng với các giá trị được cập nhật. Khi đọc bảng Iceberg, cả tệp xóa và tệp mới sẽ được áp dụng cho dữ liệu được truy xuất để phản ánh những thay đổi mới nhất và tạo ra kết quả chính xác. Vì vậy, đối với bất kỳ truy vấn tiếp theo nào, một bước bổ sung để hợp nhất tệp dữ liệu với tệp xóa và tệp mới sẽ xảy ra, điều này thường sẽ làm tăng thời gian truy vấn. Mặt khác, việc ghi có thể nhanh hơn vì không cần phải ghi lại các tệp dữ liệu hiện có.
Để kiểm tra tác động của hai cách tiếp cận, bạn có thể chạy đoạn mã sau để đặt thuộc tính bảng Iceberg:
Chạy bản cập nhật, xóa và chọn các câu lệnh SQL trong Athena để hiển thị sự khác biệt về thời gian chạy giữa sao chép khi ghi so với hợp nhất khi đọc:
Bảng sau đây tóm tắt thời gian chạy truy vấn.
Query | Sao chép khi ghi | Hợp nhất khi đọc | ||||
CẬP NHẬT | DELETE | CHỌN | CẬP NHẬT | DELETE | CHỌN | |
Thời gian chạy (giây) | 66.251 | 116.174 | 97.75 | 10.788 | 54.941 | 113.44 |
Dữ liệu đã quét (MB) | 494.06 | 3.07 | 137.16 | 494.06 | 3.07 | 137.16 |
Lưu ý rằng thời gian chạy là thời gian chạy trung bình với nhiều lần chạy trong thử nghiệm của chúng tôi.
Như kết quả thử nghiệm của chúng tôi cho thấy, luôn có sự đánh đổi trong hai cách tiếp cận. Cách tiếp cận nào để sử dụng tùy thuộc vào trường hợp sử dụng của bạn. Tóm lại, các cân nhắc liên quan đến độ trễ khi đọc so với ghi. Bạn có thể tham khảo bảng sau và đưa ra lựa chọn phù hợp.
. | Sao chép khi ghi | Hợp nhất khi đọc |
Ưu điểm | Đọc nhanh hơn | viết nhanh hơn |
Nhược điểm | viết đắt tiền | Độ trễ cao hơn khi đọc |
Khi nào sử dụng | Tốt cho việc đọc thường xuyên, cập nhật và xóa không thường xuyên hoặc cập nhật hàng loạt lớn | Tốt cho các bảng có cập nhật và xóa thường xuyên |
nén dữ liệu
Nếu kích thước tệp dữ liệu của bạn nhỏ, bạn có thể có hàng nghìn hoặc hàng triệu tệp trong bảng Iceberg. Điều này làm tăng đáng kể hoạt động I/O và làm chậm các truy vấn. Hơn nữa, Iceberg theo dõi từng tệp dữ liệu trong tập dữ liệu. Nhiều tệp dữ liệu dẫn đến nhiều siêu dữ liệu hơn. Điều này lần lượt làm tăng chi phí hoạt động và I/O khi đọc các tệp siêu dữ liệu. Để cải thiện hiệu suất truy vấn, bạn nên nén các tệp dữ liệu nhỏ thành các tệp dữ liệu lớn hơn.
Khi cập nhật và xóa các bản ghi trong bảng Iceberg, nếu sử dụng phương pháp đọc trên hợp nhất, bạn có thể phải thực hiện nhiều thao tác xóa nhỏ hoặc tệp dữ liệu mới. Chạy nén sẽ kết hợp tất cả các tệp này và tạo phiên bản mới hơn của tệp dữ liệu. Điều này giúp loại bỏ sự cần thiết phải đối chiếu chúng trong quá trình đọc. Bạn nên thực hiện các công việc nén thường xuyên để tác động đến số lần đọc ít nhất có thể trong khi vẫn duy trì tốc độ ghi nhanh hơn.
Chạy lệnh nén dữ liệu sau, sau đó chạy truy vấn chọn từ Athena:
Bảng sau đây so sánh thời gian chạy trước và sau khi nén dữ liệu. Bạn có thể thấy cải thiện hiệu suất khoảng 40%.
Query | Trước khi nén dữ liệu | Sau khi nén dữ liệu |
Thời gian chạy (giây) | 97.75 | 32.676 giây |
Dữ liệu đã quét (MB) | 137.16 M | 189.19 M |
Lưu ý rằng các truy vấn chọn đã chạy trên all_reviews
bảng sau các thao tác cập nhật và xóa, trước và sau khi nén dữ liệu. Thời gian chạy là thời gian chạy trung bình với nhiều lần chạy trong thử nghiệm của chúng tôi.
Làm sạch
Sau khi bạn làm theo hướng dẫn giải pháp để thực hiện các trường hợp sử dụng, hãy hoàn thành các bước sau để dọn sạch tài nguyên của bạn và tránh phải trả thêm chi phí:
- Thả cơ sở dữ liệu và bảng AWS Glue khỏi Athena hoặc chạy mã sau vào sổ ghi chép của bạn:
- Trên bảng điều khiển EMR Studio, chọn Không gian làm việc trong khung điều hướng.
- Chọn Không gian làm việc bạn đã tạo và chọn Xóa bỏ.
- Trên bảng điều khiển EMR, điều hướng đến Studio .
- Chọn Studio bạn đã tạo và chọn Xóa bỏ.
- Trên bảng điều khiển EMR, chọn Cụm trong khung điều hướng.
- Chọn cụm và chọn Chấm dứt.
- Xóa bộ chứa S3 và bất kỳ tài nguyên nào khác mà bạn đã tạo như một phần của điều kiện tiên quyết cho bài đăng này.
Kết luận
Trong bài đăng này, chúng tôi đã giới thiệu khung Apache Iceberg và cách nó giúp giải quyết một số thách thức mà chúng tôi gặp phải trong kho dữ liệu hiện đại. Sau đó, chúng tôi đã hướng dẫn bạn một giải pháp để xử lý dữ liệu gia tăng trong kho dữ liệu bằng cách sử dụng Apache Iceberg. Cuối cùng, chúng tôi đã đi sâu vào điều chỉnh hiệu suất để cải thiện hiệu suất đọc và ghi cho các trường hợp sử dụng của chúng tôi.
Chúng tôi hy vọng bài đăng này cung cấp một số thông tin hữu ích để bạn quyết định xem bạn có muốn áp dụng Apache Iceberg trong giải pháp hồ dữ liệu của mình hay không.
Về các tác giả
thực vật wu là Kiến trúc sư thường trú cấp cao tại AWS Data Lab. Cô ấy giúp khách hàng doanh nghiệp tạo chiến lược phân tích dữ liệu và xây dựng giải pháp để đẩy nhanh kết quả kinh doanh của họ. Khi rảnh rỗi, cô ấy thích chơi quần vợt, nhảy salsa và đi du lịch.
Daniel Li là Kiến trúc sư giải pháp cấp cao tại Amazon Web Services. Ông tập trung vào việc giúp khách hàng phát triển, áp dụng và triển khai chiến lược và dịch vụ đám mây. Khi không làm việc, anh ấy thích dành thời gian ngoài trời với gia đình.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. Truy cập Tại đây.
- nguồn: https://aws.amazon.com/blogs/big-data/use-apache-iceberg-in-a-data-lake-to-support-incremental-data-processing/
- 10
- 100
- 11
- 2022
- 2023
- 7
- 9
- a
- Có khả năng
- Giới thiệu
- ở trên
- đẩy nhanh tiến độ
- truy cập
- Quản lý truy cập
- Hoạt động
- hành vi
- Ngoài ra
- thêm vào
- địa chỉ
- địa chỉ
- Thêm
- nhận nuôi
- Lợi thế
- Sau
- chống lại
- Tất cả
- cho phép
- luôn luôn
- đàn bà gan dạ
- Amazon EMR
- Amazon Web Services
- Phân tích
- phân tích
- và
- công bố
- Apache
- các ứng dụng
- áp dụng
- phương pháp tiếp cận
- cách tiếp cận
- thích hợp
- kiến trúc
- liên kết
- Xác thực
- sẵn có
- có sẵn
- Trung bình cộng
- tránh
- AWS
- Keo AWS
- dựa
- bởi vì
- trở nên
- trước
- hưởng lợi
- Hơn
- giữa
- lớn hơn
- bootstrap
- xây dựng
- Xây dựng
- các doanh nghiệp
- chụp
- Chụp
- trường hợp
- trường hợp
- Danh mục hàng
- danh mục
- Phân loại
- thách thức
- thay đổi
- Những thay đổi
- kiểm tra
- sự lựa chọn
- Chọn
- phân loại
- đám mây
- dịch vụ điện toán đám mây
- cụm
- mã
- Cột
- Cột
- kết hợp
- Đến
- cam kết
- so
- hoàn thành
- Tính
- đồng thời
- điều kiện
- cấu hình
- sự cân nhắc
- An ủi
- Chuyển đổi
- chuyển đổi
- chi phí-hiệu quả
- Chi phí
- có thể
- tạo
- tạo ra
- tạo ra
- lưu trữ
- Current
- khách hàng
- khách hàng
- Dancing
- bảng điều khiển
- dữ liệu
- Phân tích dữ liệu
- Hồ dữ liệu
- xử lý dữ liệu
- kho dữ liệu
- Cơ sở dữ liệu
- bộ dữ liệu
- sâu
- lặn sâu
- Mặc định
- xác định
- Demo
- chứng minh
- phụ thuộc
- thiết kế
- chi tiết
- phát triển
- Phát triển
- sự khác biệt
- khác nhau
- thảo luận
- dont
- xuống
- đột ngột
- Rơi
- suốt trong
- mỗi
- Sớm hơn
- Đầu
- biên tập viên
- hiệu quả
- hiệu quả
- hay
- loại trừ hết
- kích hoạt
- cho phép
- kết thúc
- Động cơ
- Động cơ
- đăng ký hạng mục thi
- Doanh nghiệp
- khách hàng doanh nghiệp
- Ether (ETH)
- Ngay cả
- sự tiến hóa
- phát triển
- phát triển
- ví dụ
- hiện tại
- tồn tại
- Giải thích
- mở rộng
- thêm
- tạo điều kiện
- gia đình
- NHANH
- nhanh hơn
- Tính năng
- Hình
- Tập tin
- Các tập tin
- lọc
- lọc
- bộ lọc
- Cuối cùng
- Tìm kiếm
- Tên
- lần đầu tiên
- tập trung
- theo
- tiếp theo
- định dạng
- Khung
- thường xuyên
- từ
- xa hơn
- Hơn nữa
- Tổng Quát
- tạo ra
- được
- được
- Đi
- tốt
- rất nhiều
- Nhóm
- tay
- xảy ra
- giúp đỡ
- giúp đỡ
- giúp
- Thành viên ẩn danh
- hệ thống cấp bậc
- cấp độ cao
- hiệu suất cao
- hiệu suất cao
- Tổ ong
- mong
- Độ đáng tin của
- Hướng dẫn
- Tuy nhiên
- HTML
- HTTPS
- IAM
- Bản sắc
- quản lý danh tính và truy cập
- Va chạm
- tác động
- thực hiện
- thực hiện
- thực hiện
- nâng cao
- cải thiện
- cải thiện
- cải thiện
- in
- Bao gồm
- Tăng lên
- tăng
- Tăng
- chỉ số
- hệ thống riêng biệt,
- thông tin
- cài đặt, dựng lên
- thay vì
- hội nhập
- giới thiệu
- Cô lập
- IT
- Tháng một
- việc làm
- Key
- phòng thí nghiệm
- hồ
- lớn
- lớn hơn
- Độ trễ
- mới nhất
- bản phát hành mới nhất
- lớp
- lớp
- dẫn
- niveaux
- LIMIT
- Dòng
- Danh sách
- ít
- tải
- địa điểm thư viện nào
- làm cho
- LÀM CHO
- quản lý
- nhiều
- dấu
- thị trường
- Trận đấu
- phù hợp
- đi
- Siêu dữ liệu
- Might
- hàng triệu
- hiện đại
- chi tiết
- di chuyển
- nhiều
- tên
- Được đặt theo tên
- Điều hướng
- THÔNG TIN
- Cần
- cần thiết
- nhu cầu
- Mới
- máy tính xách tay
- vật
- mở
- hoạt động
- Hoạt động
- tối ưu hóa
- Tối ưu hóa
- gọi món
- nguyên
- Nền tảng khác
- ngoài trời
- tổng thể
- riêng
- cửa sổ
- một phần
- con đường
- mô hình
- thực hiện
- hiệu suất
- vật lý
- lập kế hoạch
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- chơi
- Plugin
- điểm
- Phổ biến
- có thể
- Bài đăng
- -
- điều kiện tiên quyết
- thủ tục
- quá trình
- xử lý
- sản xuất
- tài sản
- tài sản
- cho
- cung cấp
- cung cấp
- cung cấp
- phạm vi
- Nguyên
- dữ liệu thô
- Đọc
- Reading
- thực
- gần đây
- đề nghị
- hồ sơ
- phản ánh
- khu
- đăng ký
- đều đặn
- phát hành
- phát hành
- còn lại
- cần phải
- đòi hỏi
- Thông tin
- kết quả
- Kết quả
- Đánh giá
- Giàu
- Vai trò
- nguồn gốc
- chạy
- chạy
- tương tự
- quét
- giây
- Phần
- an ninh
- chọn
- lựa chọn
- Không có máy chủ
- dịch vụ
- DỊCH VỤ
- Phiên
- định
- bộ
- thiết lập
- thiết lập
- nên
- hiển thị
- Chương trình
- Đơn giản
- tình huống
- Kích thước máy
- làm chậm
- nhỏ
- Ảnh chụp
- So
- Phần mềm
- giải pháp
- Giải pháp
- một số
- Spark
- riêng
- tốc độ
- Chi
- SQL
- Bắt đầu
- Tiểu bang
- Tuyên bố
- báo cáo
- số liệu thống kê
- Bước
- Các bước
- Vẫn còn
- là gắn
- hàng
- lưu trữ
- cửa hàng
- chiến lược
- Chiến lược
- cấu trúc
- dữ liệu có cấu trúc và phi cấu trúc
- phòng thu
- subnet
- tiếp theo
- Thành công
- như vậy
- đủ
- TÓM TẮT
- hỗ trợ
- Hỗ trợ
- Hỗ trợ
- Hỗ trợ
- bàn
- mất
- dùng
- Mục tiêu
- nhiệm vụ
- kỹ thuật
- quần vợt
- thử nghiệm
- Kiểm tra
- kiểm tra
- Sản phẩm
- thông tin
- Nhà nước
- cung cấp their dịch
- bằng cách ấy
- hàng ngàn
- số ba
- Thông qua
- thời gian
- du hành thời gian
- đến
- bên nhau
- quá
- công cụ
- hàng đầu
- Tổng số:
- theo dõi
- Giao dịch
- biến đổi
- đi du lịch
- Đi du lịch
- XOAY
- loại
- Dưới
- độc đáo
- Cập nhật
- cập nhật
- Cập nhật
- cập nhật
- URL
- sử dụng
- ca sử dụng
- Người sử dụng
- thường
- VAL
- giá trị
- Các giá trị
- xác minh
- phiên bản
- đi bộ
- hương
- Kho
- đồng hồ
- cách
- web
- các dịch vụ web
- Điều gì
- liệu
- cái nào
- trong khi
- rộng
- Phạm vi rộng
- sẽ
- không có
- Công việc
- đang làm việc
- công trinh
- sẽ
- viết
- viết
- trên màn hình
- zephyrnet