Logo Zephyrnet

Di chuyển hồ dữ liệu hiện có sang hồ dữ liệu giao dịch bằng Apache Iceberg | Dịch vụ web của Amazon

Ngày:

A hồ dữ liệu là một kho lưu trữ tập trung mà bạn có thể sử dụng để lưu trữ tất cả dữ liệu có cấu trúc và phi cấu trúc của mình ở mọi quy mô. Bạn có thể lưu trữ dữ liệu của mình theo nguyên trạng mà không cần phải cấu trúc dữ liệu trước rồi chạy các loại phân tích khác nhau để hiểu rõ hơn về doanh nghiệp. Qua nhiều năm, các hồ dữ liệu trên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3) đã trở thành kho lưu trữ mặc định cho dữ liệu doanh nghiệp và là lựa chọn phổ biến cho một nhóm lớn người dùng truy vấn dữ liệu cho nhiều trường hợp sử dụng phân tích và nghiêng máy. Amazon S3 cho phép bạn truy cập các tập dữ liệu đa dạng, xây dựng bảng thông tin nghiệp vụ thông minh và đẩy nhanh việc tiêu thụ dữ liệu bằng cách áp dụng kiến trúc dữ liệu hiện đại or lưới dữ liệu mẫu trên Amazon Web Services (AWS).

Các trường hợp sử dụng phân tích trên hồ dữ liệu luôn phát triển. Thông thường, bạn muốn liên tục nhập dữ liệu từ nhiều nguồn khác nhau vào hồ dữ liệu và truy vấn dữ liệu đồng thời thông qua nhiều công cụ phân tích có khả năng giao dịch. Tuy nhiên, theo truyền thống, các hồ dữ liệu được xây dựng trên Amazon S3 là bất biến và không cung cấp khả năng giao dịch cần thiết để hỗ trợ các trường hợp sử dụng thay đổi. Với việc thay đổi các trường hợp sử dụng, khách hàng đang tìm cách không chỉ di chuyển dữ liệu mới hoặc dữ liệu gia tăng sang các hồ dữ liệu dưới dạng giao dịch mà còn chuyển đổi dữ liệu hiện có dựa trên Sàn gỗ Apache sang một hình thức giao dịch. Các định dạng bảng mở, chẳng hạn như tảng băng Apache, đưa ra giải pháp cho vấn đề này. Apache Iceberg cho phép giao dịch trên các hồ dữ liệu và có thể đơn giản hóa việc lưu trữ, quản lý, nhập và xử lý dữ liệu.

Trong bài đăng này, chúng tôi chỉ cho bạn cách bạn có thể chuyển đổi dữ liệu hiện có trong hồ dữ liệu Amazon S3 ở định dạng Apache Parquet sang định dạng Apache Iceberg để hỗ trợ các giao dịch trên dữ liệu bằng cách sử dụng Phiên tương tác dựa trên Jupyter Notebook kết thúc Keo AWS 4.0.

Di chuyển sàn gỗ hiện có sang tảng băng trôi

Có hai phương pháp rộng rãi để di chuyển dữ liệu hiện có trong hồ dữ liệu ở định dạng Apache Parquet sang định dạng Apache Iceberg nhằm chuyển đổi hồ dữ liệu sang định dạng bảng giao dịch.

Nâng cấp dữ liệu tại chỗ

Trong chiến lược di chuyển dữ liệu tại chỗ, các tập dữ liệu hiện có được nâng cấp lên định dạng Apache Iceberg mà không cần xử lý lại hoặc khôi phục lại dữ liệu hiện có trước. Điều này có nghĩa là các tệp dữ liệu trong hồ dữ liệu không bị sửa đổi trong quá trình di chuyển và tất cả các tệp siêu dữ liệu Apache Iceberg (tệp kê khai, tệp kê khai và tệp siêu dữ liệu bảng) được tạo ra bên ngoài phạm vi xem của dữ liệu. Trong phương pháp này, siêu dữ liệu được tạo lại trong môi trường biệt lập và được đặt cùng chỗ với các tệp dữ liệu hiện có. Đây có thể là một hoạt động ít tốn kém hơn nhiều so với việc viết lại tất cả các tệp dữ liệu. Định dạng tệp dữ liệu hiện có phải là Apache Parquet, Apache ORC hoặc Apache Avro. Việc di chuyển tại chỗ có thể được thực hiện theo một trong hai cách:

  1. Sử dụng thêm các tập tin: Quy trình này thêm các tệp dữ liệu hiện có vào bảng Iceberg hiện có với ảnh chụp nhanh mới bao gồm các tệp. Không giống như di chuyển hoặc chụp nhanh, add_files có thể nhập tệp từ một hoặc nhiều phân vùng cụ thể và không tạo bảng Iceberg mới. Quy trình này không phân tích sơ đồ của các tệp để xác định xem chúng có khớp với sơ đồ của bảng Iceberg hay không. Sau khi hoàn thành, bảng Iceberg xử lý các tệp này như thể chúng là một phần của tập hợp các tệp do Apache Iceberg sở hữu.
  2. Sử dụng di chuyển: Quy trình này thay thế một bảng bằng bảng Apache Iceberg được tải bằng các tệp dữ liệu của nguồn. Lược đồ, phân vùng, thuộc tính và vị trí của bảng được sao chép từ bảng nguồn. Các định dạng được hỗ trợ là Avro, Parquet và ORC. Theo mặc định, bảng gốc được giữ lại với tên table_BACKUP_. Tuy nhiên, để giữ nguyên bảng gốc trong quá trình này, bạn phải sử dụng ảnh chụp nhanh để tạo bảng tạm thời mới có cùng lược đồ và tệp dữ liệu nguồn.

Trong bài đăng này, chúng tôi chỉ cho bạn cách bạn có thể sử dụng Iceberg add_files thủ tục nâng cấp dữ liệu tại chỗ. Lưu ý rằng migrate quy trình không được hỗ trợ trong Danh mục dữ liệu AWS Glue.

Sơ đồ sau đây cho thấy một biểu diễn cấp cao.

Di chuyển dữ liệu CTAS

Phương pháp di chuyển tạo bảng dưới dạng chọn (CTAS) là một kỹ thuật trong đó tất cả thông tin siêu dữ liệu cho Iceberg được tạo cùng với việc khôi phục tất cả các tệp dữ liệu. Phương pháp này làm mờ tập dữ liệu nguồn theo lô. Khi bóng bị bắt, bạn có thể trao đổi tập dữ liệu bị bóng với nguồn.

Sơ đồ sau đây thể hiện luồng cấp cao.

Điều kiện tiên quyết

Để làm theo hướng dẫn, bạn phải có những điều sau:

Bạn có thể kiểm tra kích thước dữ liệu bằng mã sau trong AWS CLI hoặc Đám mây AWS:

//Run this command to check the data size aws s3 ls --summarize --human-readable --recursive s3://noaa-ghcn-pds/parquet/by_year/YEAR=2023

Tính đến thời điểm viết bài này, có 107 đối tượng với tổng kích thước 70 MB cho năm 2023 trong đường dẫn Amazon S3.

Lưu ý rằng để triển khai giải pháp, bạn phải hoàn thành một số bước chuẩn bị.

Triển khai tài nguyên bằng AWS CloudFormation

Hoàn thành các bước sau để tạo nhóm S3 cũng như vai trò và chính sách AWS IAM cho giải pháp:

  1. Đăng nhập vào tài khoản AWS của bạn rồi chọn Khởi chạy ngăn xếp để khởi chạy mẫu CloudFormation.

  1. Trong Tên ngăn xếp, nhập tên.
  2. Để các thông số ở giá trị mặc định. Lưu ý rằng nếu các giá trị mặc định bị thay đổi thì bạn phải thực hiện các thay đổi tương ứng trong suốt các bước sau.
  3. Chọn Sau để tạo ngăn xếp của bạn.

T Hình thành đám mây AWS mẫu triển khai các tài nguyên sau:

  • Một nhóm S3 có tên demo-blog-post-XXXXXXXX (XXXXXXXX đại diện cho ID tài khoản AWS được sử dụng).
  • Hai thư mục có tên parqueticeberg dưới cái xô.
  • Vai trò IAM và chính sách có tên demoblogpostroledemoblogpostscoped tương ứng.
  • An Cơ sở dữ liệu keo AWS tên ghcn_db.
  • An Trình thu thập keo AWS tên demopostcrawlerparquet.

Sau khi mẫu AWS CloudFormation được triển khai thành công:

  1. Sao chép dữ liệu trong vùng lưu trữ S3 đã tạo bằng lệnh sau trong AWS CLI hoặc Đám mây AWS. Thay thế XXXXXXXX một cách thích hợp trong tên nhóm S3 mục tiêu.
    Lưu ý: Trong ví dụ này, chúng tôi chỉ sao chép dữ liệu của năm 2023. Tuy nhiên, bạn có thể làm việc với toàn bộ tập dữ liệu theo các hướng dẫn tương tự.
    aws s3 sync s3://noaa-ghcn-pds/parquet/by_year/YEAR=2023/ s3://demo-blog-post-XXXXXXXX/parquet/year=2023

  2. Mở Bảng điều khiển quản lý AWS và đi tới bảng điều khiển AWS Glue.
  3. Trên ngăn điều hướng, chọn Trình thu thập thông tin.
  4. Chạy trình thu thập thông tin có tên demopostcrawlerparquet.
  5. Sau trình thu thập thông tin AWS Glue demopostcrawlerparquet được chạy thành công, thông tin siêu dữ liệu của dữ liệu Apache Parquet sẽ được phân loại theo ghcn_db Cơ sở dữ liệu AWS Glue với tên bảng source_parquet. Lưu ý rằng bảng được phân vùng yearelement các cột (như trong nhóm S3).

  1. Sử dụng truy vấn sau để xác minh dữ liệu từ amazon Athena bảng điều khiển. Nếu bạn đang sử dụng Amazon Athena lần đầu tiên trong Tài khoản AWS của mình, hãy thiết lập vị trí kết quả truy vấn trong Amazon S3.
    SELECT * FROM ghcn_db.source_parquet limit 10;

Khởi chạy sổ ghi chép AWS Glue Studio để xử lý

Đối với bài đăng này, chúng tôi sử dụng sổ ghi chép AWS Glue Studio. Thực hiện theo các bước trong Bắt đầu với sổ ghi chép trong AWS Glue Studio để thiết lập môi trường notebook. Khởi chạy các sổ ghi chép được lưu trữ dưới đây Link và giải nén chúng trên một máy trạm cục bộ.

  1. Mở AWS Glue Studio.
  2. Chọn Việc làm ETL.
  3. Chọn Máy tính xách tay Jupyter và sau đó chọn Tải lên và chỉnh sửa sổ tay hiện có. Từ Chọn tập tin, chọn yêu cầu ipynb tập tin và chọn Mở, sau đó chọn Tạo.
  4. trên Thiết lập sổ tay trang, cho Tên công việc, nhập tên logic.
  5. Trong Vai trò IAM, lựa chọn demoblogpostrole. Chọn Tạo việc làm. Sau một phút, trình soạn thảo sổ ghi chép Jupyter xuất hiện. Xóa tất cả các ô mặc định.

Các bước trước sẽ khởi chạy môi trường sổ ghi chép AWS Glue Studio. Hãy chắc chắn rằng bạn Lưu cuốn sổ mỗi khi nó được sử dụng.

Nâng cấp dữ liệu tại chỗ

Trong phần này chúng tôi chỉ cho bạn cách bạn có thể sử dụng add_files quy trình để đạt được nâng cấp dữ liệu tại chỗ. Phần này sử dụng ipynb tệp có tên demo-in-place-upgrade-addfiles.ipynb. Để sử dụng với add_files thủ tục, hãy hoàn thành các nội dung sau:

  1. trên Thiết lập sổ tay trang, cho Tên công việc, đi vào demo-in-place-upgrade cho phiên ghi chép như được giải thích trong Khởi chạy sổ ghi chép Keo để xử lý.
  2. Chạy các ô bên dưới phần Cấu hình phiên keo. Cung cấp tên vùng lưu trữ S3 từ các điều kiện tiên quyết cho bucket_name biến bằng cách thay thế XXXXXXXX.
  3. Chạy các ô tiếp theo trong sổ ghi chép.

Lưu ý rằng ô bên dưới Thực hiện thủ tục add_files phần thực hiện việc tạo siêu dữ liệu trong đường dẫn được đề cập.

Xem lại đường dẫn tệp dữ liệu cho bảng Iceberg mới. Để hiển thị một Các tệp dữ liệu hiện tại của bảng Iceberg, .files có thể được sử dụng để có được thông tin chi tiết như file_path, partition, và những người khác. Các tệp được tạo lại đang trỏ đến đường dẫn nguồn trong Amazon S3.

Lưu ý vị trí tệp siêu dữ liệu sau khi chuyển đổi. Nó trỏ đến thư mục mới có tên iceberg dưới Amazon S3. Điều này có thể được kiểm tra bằng cách sử dụng .snapshots để kiểm tra Vị trí tệp ảnh chụp nhanh của bảng Iceberg. Ngoài ra, hãy kiểm tra tương tự trong URI Amazon S3 s3://demo-blog-post-XXXXXXXX/iceberg/ghcn_db.db/target_iceberg_add_files/metadata/. Cũng lưu ý rằng có hai phiên bản của danh sách bảng kê khai được tạo sau add_files thủ tục đã được chạy. Đầu tiên là một bảng trống với lược đồ dữ liệu và thứ hai là thêm các tệp.

Bảng được liệt kê trong AWS Glue trong cơ sở dữ liệu ghcn_db với loại bảng như ICEBERG.

So sánh số lượng bản ghi sử dụng Amazon Athena giữa bảng nguồn và bảng đích. Họ giống nhau.

Tóm lại, bạn có thể sử dụng add_files quy trình chuyển đổi các tệp dữ liệu hiện có ở định dạng Apache Parquet trong hồ dữ liệu sang định dạng Apache Iceberg bằng cách thêm các tệp siêu dữ liệu mà không cần tạo lại bảng từ đầu. Sau đây là một số ưu và nhược điểm của phương pháp này.

Ưu điểm

  • Tránh quét toàn bộ bảng để đọc dữ liệu vì không có sự trình bày lại. Điều này có thể tiết kiệm thời gian.
  • Nếu có bất kỳ lỗi nào trong khi ghi siêu dữ liệu thì chỉ cần ghi lại siêu dữ liệu chứ không phải toàn bộ dữ liệu.
  • Dòng công việc hiện tại được duy trì vì danh mục hiện tại vẫn tồn tại.

Nhược điểm

  • Nếu dữ liệu được xử lý (chèn, cập nhật và xóa) trong tập dữ liệu trong quá trình ghi siêu dữ liệu thì quy trình này phải được chạy lại để bao gồm dữ liệu mới.
  • Phải có thời gian ngừng ghi để tránh phải chạy quy trình lần thứ hai.
  • Nếu cần trình bày lại dữ liệu thì quy trình làm việc này sẽ không hoạt động vì tệp dữ liệu nguồn không được sửa đổi.

Di chuyển dữ liệu CTAS

Phần này sử dụng ipynb tệp có tên demo-ctas-upgrade.ipynb. Hoàn thành những điều sau:

  1. trên Thiết lập sổ tay trang, cho Tên công việc, đi vào demo-ctas-upgrade cho phiên ghi chép như được giải thích dưới đây Khởi chạy sổ ghi chép Keo để xử lý.
  2. Chạy các ô bên dưới phần Cấu hình phiên keo. Cung cấp tên vùng lưu trữ S3 từ các điều kiện tiên quyết cho bucket_name biến bằng cách thay thế XXXXXXXX.
  3. Chạy các ô tiếp theo trong sổ ghi chép.

Lưu ý rằng ô bên dưới Tạo bảng Iceberg từ Parquet phần thực hiện nâng cấp bóng lên định dạng Iceberg. Lưu ý rằng Iceberg yêu cầu sắp xếp dữ liệu theo phân vùng bảng trước khi ghi vào bảng Iceberg. Thông tin chi tiết có thể được tìm thấy trong Chế độ phân phối viết.

Lưu ý đường dẫn tệp dữ liệu và siêu dữ liệu cho bảng Iceberg mới. Nó trỏ đến đường dẫn mới trong Amazon S3. Ngoài ra, hãy kiểm tra theo URI Amazon S3 s3://demo-blog-post-XXXXXXXX/iceberg/ghcn_db.db/target_iceberg_ctas/ được sử dụng cho bài viết này.

Bảng được phân loại theo AWS Glue trong cơ sở dữ liệu ghcn_db với loại bảng như ICEBERG.

So sánh số lượng bản ghi sử dụng Amazon Athena giữa bảng nguồn và bảng đích. Họ giống nhau.

Tóm lại, CTAS phương thức tạo một bảng mới bằng cách tạo tất cả các tệp siêu dữ liệu cùng với việc khôi phục dữ liệu thực tế. Sau đây là một số ưu và nhược điểm của phương pháp này:

Ưu điểm

  • Nó cho phép bạn kiểm tra và xác thực dữ liệu trong quá trình vì dữ liệu được trình bày lại.
  • Nếu có bất kỳ vấn đề thời gian chạy nào trong quá trình di chuyển, việc khôi phục và khôi phục có thể được thực hiện dễ dàng bằng cách xóa bảng Apache Iceberg.
  • Bạn có thể kiểm tra các cấu hình khác nhau khi di chuyển một nguồn. Bạn có thể tạo bảng mới cho từng cấu hình và đánh giá tác động.
  • Dữ liệu bóng được đổi tên thành một thư mục khác trong nguồn (để nó không xung đột với dữ liệu Apache Parquet cũ).

Nhược điểm

  • Việc lưu trữ tập dữ liệu được tăng gấp đôi trong quá trình này vì cả bảng Apache Parquet ban đầu và bảng Apache Iceberg mới đều có mặt trong giai đoạn di chuyển và thử nghiệm. Điều này cần phải được xem xét trong quá trình ước tính chi phí.
  • Quá trình di chuyển có thể mất nhiều thời gian hơn (tùy thuộc vào khối lượng dữ liệu) vì cả dữ liệu và siêu dữ liệu đều được ghi.
  • Thật khó để giữ các bảng đồng bộ nếu có thay đổi đối với bảng nguồn trong quá trình này.

Làm sạch

Để tránh phát sinh phí trong tương lai và để xóa các vai trò và chính sách không sử dụng, hãy xóa các tài nguyên bạn đã tạo: bộ dữ liệu, ngăn xếp CloudFormation, bộ chứa S3, tác vụ AWS Glue, cơ sở dữ liệu AWS Glue và bảng AWS Glue.

Kết luận

Trong bài đăng này, bạn đã tìm hiểu các chiến lược di chuyển dữ liệu có định dạng Apache Parquet hiện có sang Apache Iceberg trong Amazon S3 để chuyển đổi sang hồ dữ liệu giao dịch bằng cách sử dụng các phiên tương tác trong AWS Glue 4.0 để hoàn tất các quy trình. Nếu bạn có một trường hợp sử dụng đang phát triển trong đó hồ dữ liệu hiện có cần được chuyển đổi thành hồ dữ liệu giao dịch dựa trên định dạng bảng Apache Iceberg, hãy làm theo hướng dẫn trong bài đăng này.

Đường dẫn bạn chọn cho bản nâng cấp này, nâng cấp tại chỗ hoặc di chuyển CTAS hoặc kết hợp cả hai, sẽ phụ thuộc vào phân tích cẩn thận về kiến ​​trúc dữ liệu và quy trình tích hợp dữ liệu. Cả hai con đường đều có ưu và nhược điểm, như đã thảo luận. Ở cấp độ cao, quá trình nâng cấp này phải trải qua nhiều giai đoạn được xác định rõ ràng để xác định các mô hình tích hợp dữ liệu và trường hợp sử dụng. Việc chọn chiến lược chính xác sẽ tùy thuộc vào yêu cầu của bạn—chẳng hạn như hiệu suất, chi phí, độ mới của dữ liệu, thời gian ngừng hoạt động có thể chấp nhận được trong quá trình di chuyển, v.v.


Giới thiệu về tác giả

Rajdip Chaudhuri là Kiến trúc sư giải pháp cấp cao của Amazon Web Services chuyên về dữ liệu và phân tích. Anh ấy thích làm việc với các khách hàng và đối tác của AWS về các yêu cầu phân tích và dữ liệu. Trong thời gian rảnh rỗi, anh ấy thích bóng đá và phim ảnh.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img