by Pathik Shah and Raj Devnath | on 24 JAN 2024 | in Advanced (300), Amazon Athena, Analytics, Serverless, Technical How-to | Permalink | Comments | Share
Các hồ dữ liệu do AWS cung cấp, được hỗ trợ bởi độ sẵn sàng chưa từng có của Amazon Simple Storage Service (Amazon S3), có thể xử lý quy mô, sự linh hoạt và tính linh hoạt cần thiết để kết hợp các phương pháp phân tích và dữ liệu khác nhau. Khi các hồ dữ liệu đã phát triển về kích thước và trưởng thành trong việc sử dụng, một lượng nỗ lực đáng kể có thể được dành để giữ cho dữ liệu phù hợp với các sự kiện kinh doanh. Để đảm bảo các tệp được cập nhật theo cách nhất quán về mặt giao dịch, ngày càng có nhiều khách hàng đang sử dụng các định dạng bảng giao dịch nguồn mở như Apache Iceberg, Apache Hudi và Linux Foundation Delta Lake giúp bạn lưu trữ dữ liệu với tốc độ nén cao, giao diện nguyên bản với các ứng dụng và khung của bạn, đồng thời đơn giản hóa việc xử lý dữ liệu gia tăng trong các hồ dữ liệu được xây dựng trên Amazon S3. Các định dạng này cho phép giao dịch ACID (nguyên tử, nhất quán, cách ly, độ bền), upsert và xóa và các tính năng nâng cao như du hành thời gian và ảnh chụp nhanh mà trước đây chỉ có sẵn trong kho dữ liệu. Mỗi định dạng lưu trữ thực hiện chức năng này theo những cách hơi khác nhau; để so sánh, hãy tham khảo Chọn định dạng bảng mở cho hồ dữ liệu giao dịch của bạn trên AWS.
Vào năm 2023, AWS đã công bố tính khả dụng rộng rãi cho Apache Iceberg, Apache Hudi và Linux Foundation Delta Lake trong Amazon Athena cho Apache Spark, giúp loại bỏ nhu cầu cài đặt trình kết nối riêng biệt hoặc các phần phụ thuộc liên quan và quản lý các phiên bản, đồng thời đơn giản hóa các bước cấu hình cần thiết để sử dụng các khung này.
Trong bài đăng này, chúng tôi hướng dẫn bạn cách sử dụng Spark SQL trong Amazon Athena và làm việc với các định dạng bảng Iceberg, Hudi và Delta Lake. Chúng tôi trình bày các thao tác phổ biến như tạo cơ sở dữ liệu và bảng, chèn dữ liệu vào bảng, truy vấn dữ liệu và xem bản kết xuất nhanh của các bảng trong Amazon S3 bằng Spark SQL trong Athena.
Điều kiện tiên quyết
Hoàn thành các điều kiện tiên quyết sau:
- Đảm bảo bạn đáp ứng tất cả các điều kiện tiên quyết được đề cập trong Chạy Spark SQL trên Amazon Athena Spark.
- Tạo cơ sở dữ liệu có tên sparkblogdb và bảng có tên noaa_pq được tạo trong Danh mục dữ liệu AWS Glue như chi tiết trong bài đăng Chạy Spark SQL trên Amazon Athena Spark.
- Cấp vai trò AWS Identity and Access Management (IAM) được sử dụng trong nhóm làm việc Athena quyền đọc và ghi cho bộ chứa S3 và tiền tố. Để biết thêm thông tin, hãy tham khảo Amazon S3: Cho phép truy cập đọc và ghi vào các đối tượng trong Vùng lưu trữ S3.
- Cấp quyền vai trò IAM được sử dụng trong nhóm làm việc Athena s3:DeleteObject cho vùng lưu trữ S3 và tiền tố để dọn dẹp. Để biết thêm thông tin, hãy tham khảo phần Xóa quyền đối tượng trong các hành động của Amazon S3.
Tải xuống và nhập sổ ghi chép mẫu từ Amazon S3
Để theo dõi, hãy tải xuống sổ ghi chép được thảo luận trong bài đăng này từ các vị trí sau:
- Iceberg tutorial notebook: s3://athena-examples-us-east-1/athenasparksqlblog/notebooks/SparkSQL_iceberg.ipynb
- Hudi tutorial notebook: s3://athena-examples-us-east-1/athenasparksqlblog/notebooks/SparkSQL_hudi.ipynb
- Delta tutorial notebook: s3://athena-examples-us-east-1/athenasparksqlblog/notebooks/SparkSQL_delta.ipynb
Sau khi bạn tải xuống sổ ghi chép, hãy nhập chúng vào môi trường Athena Spark của bạn bằng cách làm theo To import a notebook trong Quản lý tệp sổ ghi chép.
Điều hướng đến phần Định dạng Bảng Mở cụ thể
Nếu bạn quan tâm đến định dạng bảng Iceberg, hãy điều hướng đến Làm việc với bảng Apache Iceberg.
Nếu bạn quan tâm đến định dạng bảng Hudi, hãy điều hướng đến Làm việc với bảng Apache Hudi.
Nếu bạn quan tâm đến định dạng bảng Delta Lake, hãy điều hướng đến Làm việc với nền tảng Linux bảng Delta Lake.
Làm việc với bảng Apache Iceberg
Khi sử dụng máy tính xách tay Spark trong Athena, bạn có thể chạy các truy vấn SQL trực tiếp mà không cần phải sử dụng PySpark. Chúng tôi làm điều này bằng cách sử dụng phép thuật ô, là các tiêu đề đặc biệt trong ô sổ ghi chép thay đổi hành vi của ô. Đối với SQL, chúng ta có thể thêm %%sql, phần này sẽ diễn giải toàn bộ nội dung ô dưới dạng câu lệnh SQL để chạy trên Athena.
Trong phần này, chúng tôi chỉ ra cách bạn có thể sử dụng SQL trên Apache Spark cho Athena để tạo, phân tích và quản lý các bảng Apache Iceberg.
Thiết lập phiên sổ ghi chép
Để sử dụng Apache Iceberg trong Athena, trong khi tạo hoặc chỉnh sửa phiên, hãy chọn tùy chọn Apache Iceberg bằng cách mở rộng phần Apache Spark properties . Nó sẽ điền trước các thuộc tính như thể hiện trong ảnh chụp màn hình sau.
Để biết các bước, hãy xem Chỉnh sửa chi tiết phiên hoặc Tạo sổ ghi chép của riêng bạn.
Mã được sử dụng trong phần này có sẵn trong tệp SparkSQL_iceberg.ipynb để làm theo.
Tạo cơ sở dữ liệu và bảng Iceberg
Trước tiên, chúng tôi tạo một cơ sở dữ liệu trong Danh mục dữ liệu AWS Glue. Với SQL sau, chúng ta có thể tạo một cơ sở dữ liệu gọi là icebergdb:
| %%sql CREATE DATABASE icebergdb |
Tiếp theo, trong cơ sở dữ liệu icebergdb, chúng ta tạo một bảng Iceberg có tên noaa_iceberg trỏ đến một vị trí trong Amazon S3 nơi chúng ta sẽ tải dữ liệu. Chạy câu lệnh sau và thay thế vị trí s3://<your-S3-bucket>/<prefix>/ bằng bộ chứa S3 và tiền tố của bạn:
| %%sql CREATE TABLE icebergdb.noaa_iceberg( station string, date string, latitude string, longitude string, elevation string, name string, temp string, temp_attributes string, dewp string, dewp_attributes string, slp string, slp_attributes string, stp string, stp_attributes string, visib string, visib_attributes string, wdsp string, wdsp_attributes string, mxspd string, gust string, max string, max_attributes string, min string, min_attributes string, prcp string, prcp_attributes string, sndp string, frshtt string) USING iceberg PARTITIONED BY (year string) LOCATION ‘s3://<your-S3-bucket>/<prefix>/noaaiceberg/’ |
Thêm dữ liệu vào bảng
Để điền vào bảng noaa_iceberg Iceberg, chúng tôi chèn dữ liệu từ bảng Parquet sparkblogdb.noaa_pq được tạo như một phần của điều kiện tiên quyết. Bạn có thể làm điều này bằng cách sử dụng câu lệnh INSERT INTO trong Spark:
| %%sql INSERT INTO icebergdb.noaa_iceberg select * from sparkblogdb.noaa_pq |
Ngoài ra, bạn có thể sử dụng CREATE TABLE AS SELECT với mệnh đề USING iceberg để tạo bảng Iceberg và chèn dữ liệu từ bảng nguồn trong một bước:
| %%sql CREATE TABLE icebergdb.noaa_iceberg USING iceberg PARTITIONED BY (year) AS SELECT * FROM sparkblogdb.noaa_pq ORDER BY year |
Truy vấn bảng Iceberg
Bây giờ dữ liệu đã được chèn vào bảng Iceberg, chúng ta có thể bắt đầu phân tích nó. Hãy chạy Spark SQL để tìm nhiệt độ tối thiểu được ghi lại theo năm cho vị trí ‘SEATTLE TACOMA AIRPORT, WA US’:
| %%sql select name, year, min(MIN) as minimum_temperature from icebergdb.noaa_iceberg where name = ‘SEATTLE TACOMA AIRPORT, WA US’ group by 1,2 |
Chúng tôi nhận được đầu ra sau đây.
Cập nhật dữ liệu trong bảng Iceberg
Hãy xem cách cập nhật dữ liệu trong bảng của chúng tôi. Chúng tôi muốn cập nhật tên ga ‘SEATTLE TACOMA AIRPORT, WA US’ thành ‘Sea-Tac’. Sử dụng Spark SQL, chúng ta có thể chạy một câu lệnh UPDATE đối với bảng Iceberg:
| %%sql UPDATE icebergdb.noaa_iceberg SET name = ‘Sea-Tac’ WHERE name = ‘SEATTLE TACOMA AIRPORT, WA US’ |
Sau đó, chúng ta có thể chạy truy vấn SELECT trước đó để tìm nhiệt độ tối thiểu được ghi lại cho vị trí ‘Sea-Tac’:
| %%sql select name, year, min(MIN) as minimum_temperature from icebergdb.noaa_iceberg where name = ‘Sea-Tac’ group by 1,2 |
Chúng tôi nhận được kết quả sau.
Tệp dữ liệu nhỏ gọn
Các định dạng bảng mở như Iceberg hoạt động bằng cách tạo các thay đổi delta trong lưu trữ tệp và theo dõi các phiên bản của các hàng thông qua các tệp kê khai. Nhiều tệp dữ liệu hơn dẫn đến nhiều siêu dữ liệu được lưu trữ trong các tệp kê khai hơn và các tệp dữ liệu nhỏ thường gây ra lượng siêu dữ liệu không cần thiết, dẫn đến các truy vấn kém hiệu quả hơn và chi phí truy cập Amazon S3 cao hơn. Chạy quy trình rewrite_data_files của Iceberg trong Spark for Athena sẽ thu gọn các tệp dữ liệu, kết hợp nhiều tệp thay đổi delta nhỏ thành một tập hợp nhỏ hơn các tệp Parquet được tối ưu hóa đọc. Nén tệp sẽ tăng tốc thao tác đọc khi được truy vấn. Để chạy nén trên bảng của chúng tôi, hãy chạy Spark SQL sau:
| %%sql CALL spark_catalog.system.rewrite_data_files (table => ‘icebergdb.noaa_iceberg’, strategy=>’sort’, sort_order => ‘zorder(name)’) |
rewrite_data_files cung cấp các tùy chọn để chỉ định chiến lược sắp xếp của bạn, có thể giúp tổ chức lại và thu gọn dữ liệu.
Ảnh chụp nhanh bảng danh sách
Mỗi thao tác ghi, cập nhật, xóa, upsert và nén trên bảng Iceberg tạo ra một ảnh chụp nhanh mới của bảng trong khi vẫn giữ dữ liệu cũ và siêu dữ liệu xung quanh để cách ly ảnh chụp nhanh và du hành thời gian. Để liệt kê ảnh chụp nhanh của bảng Iceberg, hãy chạy câu lệnh Spark SQL sau:
| %%sql SELECT * FROM spark_catalog.icebergdb.noaa_iceberg.snapshots |
Bản kết xuất nhanh cũ hết hạn
Bạn nên sử dụng ảnh chụp nhanh thường xuyên hết hạn để xóa các tệp dữ liệu không còn cần thiết nữa và giữ kích thước siêu dữ liệu bảng nhỏ. Nó sẽ không bao giờ xóa các tệp vẫn được yêu cầu bởi ảnh chụp nhanh chưa hết hạn. Trong Spark cho Athena, chạy SQL sau để hết hạn ảnh chụp nhanh cho bảng icebergdb.noaa_iceberg cũ hơn dấu thời gian cụ thể:
| %%sql CALL spark_catalog.system.expire_snapshots (‘icebergdb.noaa_iceberg’, TIMESTAMP ‘2023-11-30 00:00:00.000’) |
Lưu ý rằng giá trị dấu thời gian được chỉ định dưới dạng chuỗi ở định dạng yyyy-MM-dd HH: mm: ss.fff. Đầu ra sẽ cung cấp số lượng dữ liệu và tệp siêu dữ liệu bị xóa.
Xóa bảng và cơ sở dữ liệu
Bạn có thể chạy Spark SQL sau để dọn dẹp các bảng Iceberg và dữ liệu liên quan trong Amazon S3 từ bài tập này:
| %%sql DROP TABLE icebergdb.noaa_iceberg PURGE |
Chạy Spark SQL sau để loại bỏ cơ sở dữ liệu icebergdb:
| %%sql DROP DATABASE icebergdb |
Để tìm hiểu thêm về tất cả các thao tác bạn có thể thực hiện trên bảng Iceberg bằng Spark for Athena, hãy tham khảo Spark Queries và Spark Procedures trong tài liệu Iceberg.
Làm việc với bảng Apache Hudi
Tiếp theo, chúng tôi chỉ ra cách bạn có thể sử dụng SQL trên Spark cho Athena để tạo, phân tích và quản lý các bảng Apache Hudi.
Thiết lập phiên sổ ghi chép
Để sử dụng Apache Hudi trong Athena, trong khi tạo hoặc chỉnh sửa phiên, hãy chọn tùy chọn Apache Hudi bằng cách mở rộng phần thuộc tính Apache Spark.
Để biết các bước, hãy xem Chỉnh sửa chi tiết phiên hoặc Tạo sổ ghi chép của riêng bạn.
Mã được sử dụng trong phần này phải có sẵn trong tệp SparkSQL_hudi.ipynb để làm theo.
Tạo cơ sở dữ liệu và bảng Hudi
First, we create a database called hudidb that will be stored in the AWS Glue Data Catalog followed by Hudi table creation:
| %%sql CREATE DATABASE hudidb |
Chúng tôi tạo một bảng Hudi trỏ đến một vị trí trong Amazon S3 nơi chúng tôi sẽ tải dữ liệu. Lưu ý rằng bảng thuộc loại sao chép khi ghi. Nó được định nghĩa bởi type = ‘cow’ trong bảng DDL. Chúng tôi đã định nghĩa station và date là nhiều khóa chính và preCombinedField là năm. Ngoài ra, bảng được phân vùng theo năm. Chạy câu lệnh sau và thay thế vị trí s3://<your-S3-bucket>/<prefix>/ bằng bộ chứa S3 và tiền tố của bạn:
| %%sql CREATE TABLE hudidb.noaa_hudi( station string, date string, latitude string, longitude string, elevation string, name string, temp string, temp_attributes string, dewp string, dewp_attributes string, slp string, slp_attributes string, stp string, stp_attributes string, visib string, visib_attributes string, wdsp string, wdsp_attributes string, mxspd string, gust string, max string, max_attributes string, min string, min_attributes string, prcp string, prcp_attributes string, sndp string, frshtt string, year string) USING HUDI PARTITIONED BY (year) TBLPROPERTIES( primaryKey = ‘station, date’, preCombineField = ‘year’, type = ‘cow’ ) LOCATION ‘s3://<your-S3-bucket>/<prefix>/noaahudi/’ |
Chèn dữ liệu vào bảng
Giống như với Iceberg, chúng ta sử dụng câu lệnh INSERT INTO để điền vào bảng bằng cách đọc dữ liệu từ bảng sparkblogdb.noaa_pq được tạo trong bài trước:
| %%sql INSERT INTO hudidb.noaa_hudi select * from sparkblogdb.noaa_pq |
Truy vấn bảng Hudi
Bây giờ bảng đã được tạo, hãy chạy truy vấn để tìm nhiệt độ tối đa được ghi lại cho ‘SEATTLE TACOMA AIRPORT, WA US’
| %%sql select name, year, max(MAX) as maximum_temperature from hudidb.noaa_hudi where name = ‘SEATTLE TACOMA AIRPORT, WA US’ group by 1,2 |
Cập nhật dữ liệu trong bảng Hudi
Hãy đổi tên ga ‘SEATTLE TACOMA AIRPORT, WA US’ thành ‘Sea–Tac’. Chúng ta có thể chạy câu lệnh UPDATE trên Spark for Athena để cập nhật các bản ghi của noaa_hudi:
| %%sql UPDATE hudidb.noaa_hudi SET name = ‘Sea-Tac’ |
WHERE name = ‘SEATTLE TACOMA AIRPORT, WA US’
Chúng tôi chạy truy vấn SELECT trước đó để tìm nhiệt độ tối đa được ghi lại cho ‘Sea-Tac’
| %%sql select name, year, max(MAX) as maximum_temperature from hudidb.noaa_hudi where name = ‘Sea-Tac’ group by 1,2 |
Chạy truy vấn thời gian
Chúng ta có thể sử dụng các truy vấn thời gian trong SQL trên Athena để phân tích các ảnh chụp nhanh dữ liệu trong quá khứ. Chẳng hạn:
| %%sql select name, year, max(MAX) as maximum_temperature from hudidb.noaa_hudi timestamp as of ‘2023-12-01 23:53:43.100’ where name = ‘SEATTLE TACOMA AIRPORT, WA US’ group by 1,2 |
Truy vấn này kiểm tra dữ liệu nhiệt độ tại Sân bay Seattle tính đến một thời điểm cụ thể trong quá khứ. Mệnh đề dấu thời gian cho phép chúng tôi quay trở lại mà không thay đổi dữ liệu hiện tại. Lưu ý rằng giá trị dấu thời gian được chỉ định dưới dạng chuỗi ở định dạng yyyy-MM-dd HH: mm: ss.fff.
Tối ưu hóa tốc độ truy vấn với phân cụm
Để cải thiện hiệu suất truy vấn, bạn có thể thực hiện phân cụm trên bảng Hudi bằng SQL trong Spark cho Athena:
| %%sql CALL run_clustering(table => ‘hudidb.noaa_hudi’, order => ‘name’) |
Bảng nhỏ gọn
Nén là một dịch vụ bảng được Hudi sử dụng đặc biệt trong các bảng Hợp nhất khi đọc (MOR) để hợp nhất các bản cập nhật từ tệp nhật ký dựa trên hàng sang tệp cơ sở dựa trên cột tương ứng theo định kỳ để tạo phiên bản mới của tệp cơ sở. Nén không áp dụng cho các bảng Copy On Write (COW) và chỉ áp dụng cho các bảng MOR. Bạn có thể chạy truy vấn sau trong Spark cho Athena để thực hiện nén trên bảng MOR:
| %%sql CALL run_compaction(op => ‘run’, table => ‘hudi_table_mor’); |
Xóa bảng và cơ sở dữ liệu
Chạy Spark SQL sau để xóa bảng Hudi bạn đã tạo và liên kết dữ liệu khỏi vị trí Amazon S3:
| %%sql DROP TABLE hudidb.noaa_hudi PURGE |
Chạy Spark SQL sau để loại bỏ cơ sở dữ liệu hudidb:
| %%sql DROP DATABASE hudidb |
Để tìm hiểu về tất cả các thao tác bạn có thể thực hiện trên bảng Hudi bằng Spark cho Athena, hãy tham khảo SQL DDL và Quy trình trong tài liệu Hudi.
Làm việc với nền tảng Linux Bảng Delta Lake
Tiếp theo, chúng tôi chỉ ra cách bạn có thể sử dụng SQL trên Spark cho Athena để tạo, phân tích và quản lý các bảng Delta Lake.
Thiết lập phiên sổ ghi chép
Để sử dụng Delta Lake trong Spark cho Athena, trong khi tạo hoặc chỉnh sửa phiên, hãy chọn Linux Foundation Delta Lake bằng cách mở rộng phần thuộc tính Apache Spark.
Để biết các bước, hãy xem Chỉnh sửa chi tiết phiên hoặc Tạo sổ ghi chép của riêng bạn.
Mã được sử dụng trong phần này phải có sẵn trong tệp SparkSQL_delta.ipynb để làm theo.
Tạo cơ sở dữ liệu và bảng Delta Lake
Trong phần này, chúng ta tạo một cơ sở dữ liệu trong Danh mục dữ liệu AWS Glue. Sử dụng SQL sau, chúng ta có thể tạo một cơ sở dữ liệu được gọi là deltalakedb:
| %%sql CREATE DATABASE deltalakedb |
Tiếp theo, trong cơ sở dữ liệu deltalakedb, chúng ta tạo một bảng Delta Lake có tên noaa_delta trỏ đến một vị trí trong Amazon S3 nơi chúng ta sẽ tải dữ liệu. Chạy câu lệnh sau và thay thế vị trí s3://<your-S3-bucket>/<prefix>/ bằng bộ chứa S3 và tiền tố của bạn:
| %%sql CREATE TABLE deltalakedb.noaa_delta( station string, date string, latitude string, longitude string, elevation string, name string, temp string, temp_attributes string, dewp string, dewp_attributes string, slp string, slp_attributes string, stp string, stp_attributes string, visib string, visib_attributes string, wdsp string, wdsp_attributes string, mxspd string, gust string, max string, max_attributes string, min string, min_attributes string, prcp string, prcp_attributes string, sndp string, frshtt string) USING delta PARTITIONED BY (year string) LOCATION ‘s3://<your-S3-bucket>/<prefix>/noaadelta/’ |
Chèn dữ liệu vào bảng
Chúng ta sử dụng câu lệnh INSERT INTO để điền vào bảng bằng cách đọc dữ liệu từ bảng sparkblogdb.noaa_pq được tạo trong bài trước:
%%sql
CHÈN VÀO deltalakedb.noaa_delta chọn * từ SparkBlogDB.noaa_pq
Bạn cũng có thể sử dụng CREATE TABLE AS SELECT để tạo bảng Delta Lake và chèn dữ liệu từ bảng nguồn vào một truy vấn.
Truy vấn bảng Delta Lake
Bây giờ dữ liệu đã được chèn vào bảng Delta Lake, chúng ta có thể bắt đầu phân tích nó. Hãy chạy Spark SQL để tìm nhiệt độ tối thiểu được ghi lại cho vị trí ‘SEATTLE TACOMA AIRPORT, WA US’:
%%sql
select name, year, max(MAX) as minimum_temperature
from deltalakedb.noaa_delta
where name = ‘SEATTLE TACOMA AIRPORT, WA US’
group by 1,2
Cập nhật dữ liệu trong bảng hồ ĐBSCL
Hãy đổi tên ga ‘SEATTLE TACOMA AIRPORT, WA US’ thành ‘Sea–Tac’. Chúng ta có thể chạy câu lệnh UPDATE trên Spark for Athena để cập nhật các bản ghi của bảng noaa_delta:
| %%sql UPDATE deltalakedb.noaa_delta SET name = ‘Sea-Tac’ WHERE name = ‘SEATTLE TACOMA AIRPORT, WA US’ |
Chúng ta có thể chạy truy vấn SELECT trước đó để tìm nhiệt độ tối thiểu được ghi lại cho vị trí ‘Sea-Tac’ và kết quả sẽ giống như trước đó:
| %%sql select name, year, max(MAX) as minimum_temperature from deltalakedb.noaa_delta where name = ‘Sea-Tac’ group by 1,2 |
Tệp dữ liệu nhỏ gọn
Trong Spark for Athena, bạn có thể chạy OPTIMIZE trên bảng Delta Lake, bảng này sẽ nén các tệp nhỏ thành các tệp lớn hơn, vì vậy các truy vấn không bị gánh nặng bởi chi phí tệp nhỏ. Để thực hiện thao tác nén, hãy chạy truy vấn sau:
| %%sql OPTIMIZE deltalakedb.noaa_delta |
Tham khảo tài liệu Tối ưu hóa trong Delta Lake để biết các tùy chọn khác nhau có sẵn trong khi chạy OPTIMIZE.
Xóa các tệp không còn được tham chiếu bởi bảng Delta Lake
Bạn có thể xóa các tệp được lưu trữ trong Amazon S3 không còn được tham chiếu bởi bảng Delta Lake và cũ hơn ngưỡng lưu giữ bằng cách chạy lệnh VACCUM trên bảng bằng Spark for Athena:
| %%sql VACUUM deltalakedb.noaa_delta |
Tham khảo Xóa các tệp không còn được tham chiếu bởi bảng Delta trong tài liệu Delta Lake để biết các tùy chọn có sẵn với VACUUM.
Xóa bảng và cơ sở dữ liệu
Chạy Spark SQL sau để loại bỏ bảng Delta Lake bạn đã tạo:
| %%sql DROP TABLE deltalakedb.noaa_delta |
Chạy Spark SQL sau để loại bỏ cơ sở dữ liệu deltalakedb:
| %%sql DROP DATABASE deltalakedb |
Chạy DROP TABLE DDL trên bảng và cơ sở dữ liệu Delta Lake sẽ xóa siêu dữ liệu cho các đối tượng này nhưng không tự động xóa các tệp dữ liệu trong Amazon S3. Bạn có thể chạy mã Python sau trong ô của sổ ghi chép để xóa dữ liệu khỏi vị trí S3:
| import boto3 s3 = boto3.resource(‘s3’) bucket = s3.Bucket(‘<your-S3-bucket>’) bucket.objects.filter(Prefix=”<prefix>/noaadelta/”).delete() |
Để tìm hiểu thêm về các câu lệnh SQL mà bạn có thể chạy trên bảng Delta Lake bằng cách sử dụng Spark cho Athena, hãy tham khảo bắt đầu nhanh trong tài liệu Delta Lake.
Kết thúc
Bài đăng này đã trình bày cách sử dụng Spark SQL trong sổ ghi chép Athena để tạo cơ sở dữ liệu và bảng, chèn và truy vấn dữ liệu và thực hiện các thao tác phổ biến như cập nhật, nén và du hành thời gian trên các bảng Hudi, Delta Lake và Iceberg. Các định dạng bảng mở thêm các giao dịch ACID, upsert và xóa vào hồ dữ liệu, khắc phục các hạn chế của việc lưu trữ đối tượng thô. Bằng cách loại bỏ nhu cầu cài đặt các trình kết nối riêng biệt, tích hợp tích hợp sẵn của Spark on Athena giúp giảm các bước cấu hình và chi phí quản lý khi sử dụng các khung phổ biến này để xây dựng hồ dữ liệu đáng tin cậy trên Amazon S3. Để tìm hiểu thêm về cách chọn định dạng bảng mở cho khối lượng công việc hồ dữ liệu của bạn, hãy tham khảo Chọn định dạng bảng mở cho hồ dữ liệu giao dịch của bạn trên AWS.
Tham khảo