Logo Zephyrnet

Chạy Spark SQL trên Amazon Athena Spark | Dịch vụ web của Amazon

Ngày:

Tại AWS re:Invent 2022, Amazon Athena ra mắt hỗ trợ cho Apache Spark. Với lần ra mắt này, amazon Athena hỗ trợ hai công cụ truy vấn nguồn mở: Apache Spark và Trino. Athena Spark cho phép bạn xây dựng các ứng dụng Apache Spark bằng trải nghiệm sổ ghi chép đơn giản hóa trên bảng điều khiển Athena hoặc thông qua API Athena. Máy tính xách tay Athena Spark hỗ trợ PySpark và các phép thuật của máy tính xách tay để cho phép bạn làm việc với Spark SQL. Đối với các ứng dụng tương tác, Athena Spark cho phép bạn mất ít thời gian chờ đợi hơn và làm việc hiệu quả hơn với thời gian khởi động ứng dụng chưa đến một giây. Và vì Athena không có máy chủ và được quản lý hoàn toàn nên bạn có thể chạy khối lượng công việc của mình mà không phải lo lắng về cơ sở hạ tầng cơ bản.

Các ứng dụng hiện đại lưu trữ lượng lớn dữ liệu trên Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3), cung cấp bộ lưu trữ có độ bền cao và tiết kiệm chi phí, đồng thời cho phép bạn chạy phân tích và học máy (ML) từ hồ dữ liệu để tạo ra thông tin chi tiết về dữ liệu của bạn. Trước khi bạn chạy những khối lượng công việc này, hầu hết khách hàng đều chạy truy vấn SQL để trích xuất, lọc, nối và tổng hợp dữ liệu một cách tương tác thành một hình dạng có thể dùng để ra quyết định, đào tạo mô hình hoặc suy luận. Chạy SQL trên các hồ dữ liệu rất nhanh và Athena cung cấp API được tối ưu hóa, tương thích với Trino và Presto, bao gồm trình tối ưu hóa mạnh mẽ. Ngoài ra, các tổ chức thuộc nhiều ngành như dịch vụ tài chính, chăm sóc sức khỏe và bán lẻ đang áp dụng Apache Spark, một hệ thống xử lý phân tán, nguồn mở phổ biến được tối ưu hóa để phân tích nhanh và chuyển đổi nâng cao đối với dữ liệu ở mọi quy mô. Với sự hỗ trợ trong Athena dành cho Apache Spark, bạn có thể sử dụng cả Spark SQL và PySpark trong một sổ ghi chép duy nhất để tạo thông tin chi tiết về ứng dụng hoặc xây dựng mô hình. Bắt đầu với Spark SQL để trích xuất, lọc và dự án các thuộc tính mà bạn muốn làm việc. Sau đó, để thực hiện phân tích dữ liệu phức tạp hơn như kiểm tra hồi quy và dự báo chuỗi thời gian, bạn có thể sử dụng Apache Spark với Python, điều này cho phép bạn tận dụng hệ sinh thái thư viện phong phú, bao gồm trực quan hóa dữ liệu trong Matplot, Seaborn và Plotly.

Trong bài đăng đầu tiên của loạt bài gồm ba phần này, chúng tôi sẽ hướng dẫn bạn cách bắt đầu sử dụng Spark SQL trong sổ ghi chép Athena. Chúng tôi trình bày cách truy vấn cơ sở dữ liệu và bảng trong Amazon S3 và Keo AWS Danh mục dữ liệu sử dụng Spark SQL trong Athena. Chúng tôi đề cập đến một số lệnh SQL phổ biến và nâng cao được sử dụng trong Spark SQL, đồng thời chỉ cho bạn cách sử dụng Python để mở rộng chức năng của bạn với các hàm do người dùng xác định (UDF) cũng như trực quan hóa dữ liệu được truy vấn. Trong bài đăng tiếp theo, chúng tôi sẽ hướng dẫn bạn cách sử dụng Athena Spark với các định dạng bảng giao dịch nguồn mở. Trong bài đăng thứ ba, chúng tôi sẽ đề cập đến việc phân tích các nguồn dữ liệu khác ngoài Amazon S3 bằng Athena Spark.

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

Để bắt đầu, bạn sẽ cần những thứ sau:

Cung cấp cho Athena Spark quyền truy cập vào dữ liệu của bạn thông qua vai trò IAM

Khi bạn tiếp tục hướng dẫn này, chúng tôi sẽ tạo cơ sở dữ liệu và bảng mới. Theo mặc định, Athena Spark không có quyền thực hiện việc này. Để cung cấp quyền truy cập này, bạn có thể thêm chính sách nội tuyến sau vào Quản lý truy cập và nhận dạng AWS (IAM) được gắn vào nhóm làm việc, cung cấp khu vực và số tài khoản của bạn. Để biết thêm thông tin, hãy tham khảo phần Để nhúng chính sách nội tuyến cho người dùng hoặc vai trò (bảng điều khiển) in Thêm quyền nhận dạng IAM (bảng điều khiển).

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadfromPublicS3", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::athena-examples-us-east-1/*", "arn:aws:s3:::athena-examples-us-east-1" ] }, { "Sid": "GlueReadDatabases", "Effect": "Allow", "Action": [ "glue:GetDatabases" ], "Resource": "arn:aws:glue:<region>:<account-id>:*" }, { "Sid": "GlueReadDatabase", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:database/sparkblogdb", "arn:aws:glue:<region>:<account-id>:table/sparkblogdb/*", "arn:aws:glue:<region>:<account-id>:database/default" ] }, { "Sid": "GlueCreateDatabase", "Effect": "Allow", "Action": [ "glue:CreateDatabase" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:database/sparkblogdb" ] }, { "Sid": "GlueDeleteDatabase", "Effect": "Allow", "Action": "glue:DeleteDatabase", "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:database/sparkblogdb", "arn:aws:glue:<region>:<account-id>:table/sparkblogdb/*" ] }, { "Sid": "GlueCreateDeleteTablePartitions", "Effect": "Allow", "Action": [ "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:<region>:<account-id>:catalog", "arn:aws:glue:<region>:<account-id>:database/sparkblogdb", "arn:aws:glue:<region>:<account-id>:table/sparkblogdb/*" ] } ]
}

Chạy truy vấn SQL trực tiếp trong sổ ghi chép mà không cần sử dụng Python

Khi sử dụng sổ ghi chép Athena Spark, chúng ta có thể chạy truy vấn SQL trực tiếp mà không cần phải sử dụng PySpark. Chúng tôi thực hiện điều này bằng cách sử dụng các phép thuật của ô, là các tiêu đề đặc biệt trong sổ ghi chép giúp thay đổi hành vi của các ô. Đối với SQL, chúng ta có thể thêm phép thuật %%sql, phép thuật 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 Spark.

Bây giờ chúng ta đã tạo nhóm làm việc và sổ ghi chép, hãy bắt đầu khám phá Tóm tắt về bề mặt toàn cầu của NOAA trong ngày tập dữ liệu, cung cấp các biện pháp môi trường từ nhiều địa điểm khác nhau trên khắp trái đất. Các tập dữ liệu được sử dụng trong bài viết này là các tập dữ liệu công khai được lưu trữ ở các vị trí Amazon S3 sau:

  • Dữ liệu sàn gỗ cho năm 2020s3://athena-examples-us-east-1/athenasparkblog/noaa-gsod-pds/parquet/2020/
  • Dữ liệu sàn gỗ cho năm 2021 s3://athena-examples-us-east-1/athenasparksqlblog/noaa_pq/year=2021/
  • Dữ liệu sàn gỗ từ năm 2022s3://athena-examples-us-east-1/athenasparksqlblog/noaa_pq/year=2022/

Để sử dụng dữ liệu này, chúng tôi cần cơ sở dữ liệu Danh mục dữ liệu AWS Glue đóng vai trò là kho lưu trữ di động cho Athena, cho phép chúng tôi tạo các bảng bên ngoài trỏ đến vị trí của các tập dữ liệu trong Amazon S3. Đầu tiên, chúng tôi tạo cơ sở dữ liệu trong Danh mục dữ liệu bằng Athena và Spark.

Tạo cơ sở dữ liệu

Chạy SQL sau trong sổ ghi chép của bạn bằng cách sử dụng %%sql ma thuật:

%%sql CREATE DATABASE sparkblogdb

Bạn nhận được đầu ra sau:
Đầu ra của CREATE DATABASE SQL

Tạo bảng

Bây giờ chúng ta đã tạo cơ sở dữ liệu trong Danh mục dữ liệu, chúng ta có thể tạo một bảng được phân vùng trỏ đến tập dữ liệu được lưu trữ trong Amazon S3:

%%sql
CREATE EXTERNAL TABLE sparkblogdb.noaa_pq( 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) PARTITIONED BY (year string)
STORED AS PARQUET
LOCATION 's3://athena-examples-us-east-1/athenasparksqlblog/noaa_pq/'

Tập dữ liệu này được phân vùng theo năm, nghĩa là chúng tôi lưu trữ các tệp dữ liệu cho từng năm riêng biệt, giúp đơn giản hóa việc quản lý và cải thiện hiệu suất vì chúng tôi có thể nhắm mục tiêu đến các vị trí S3 cụ thể trong một truy vấn. Danh mục dữ liệu biết về bảng và bây giờ chúng tôi sẽ để nó tự động tính toán xem chúng tôi có bao nhiêu phân vùng bằng cách sử dụng MSCK tiện ích:

%%sql
MSCK REPAIR TABLE sparkblogdb.noaa_pq

Khi câu lệnh trước hoàn tất, bạn có thể chạy lệnh sau để liệt kê các phân vùng hàng năm được tìm thấy trong bảng:

%%sql
SHOW PARTITIONS sparkblogdb.noaa_pq

Đầu ra của SHOW PARTITIONS SQL

Bây giờ chúng ta đã tạo bảng và thêm các phân vùng, hãy chạy truy vấn để tìm nhiệt độ tối thiểu được ghi cho 'SEATTLE TACOMA AIRPORT, WA US' vị trí:

%%sql
select year, min(MIN) as minimum_temperature from sparkblogdb.noaa_pq where name = 'SEATTLE TACOMA AIRPORT, WA US' group by 1

Bạn nhận được đầu ra sau:

Hình ảnh hiển thị đầu ra của câu lệnh SQL trước đó.

Truy vấn Danh mục dữ liệu nhiều tài khoản từ Athena Spark

Athena hỗ trợ truy cập Danh mục dữ liệu AWS Glue giữa nhiều tài khoản, cho phép bạn sử dụng Spark SQL trong Athena Spark để truy vấn Danh mục dữ liệu trong tài khoản AWS được ủy quyền.

Mẫu truy cập Danh mục dữ liệu nhiều tài khoản thường được sử dụng trong lưới dữ liệu kiến trúc, khi nhà sản xuất dữ liệu muốn chia sẻ danh mục và dữ liệu với tài khoản người tiêu dùng. Sau đó, tài khoản người tiêu dùng có thể thực hiện phân tích và khám phá dữ liệu trên dữ liệu được chia sẻ. Đây là một mô hình đơn giản hóa mà chúng ta không cần sử dụng Sự hình thành hồ AWS chia sẻ dữ liệu. Sơ đồ sau đây cung cấp thông tin tổng quan về cách thiết lập hoạt động giữa một tài khoản nhà sản xuất và một tài khoản người tiêu dùng, có thể mở rộng cho nhiều tài khoản nhà sản xuất và người tiêu dùng.

Hình ảnh cung cấp thông tin tổng quan về cách thiết lập hoạt động giữa một tài khoản nhà sản xuất và một tài khoản người tiêu dùng, có thể mở rộng cho nhiều tài khoản nhà sản xuất và người tiêu dùng.

Bạn cần thiết lập các chính sách truy cập phù hợp trên Danh mục dữ liệu của tài khoản nhà sản xuất để có thể truy cập nhiều tài khoản. Cụ thể, bạn phải đảm bảo vai trò IAM của tài khoản người dùng dùng để chạy tính toán Spark trên Athena có quyền truy cập vào Danh mục dữ liệu và dữ liệu nhiều tài khoản trong Amazon S3. Để biết hướng dẫn thiết lập, hãy tham khảo Định cấu hình quyền truy cập AWS Glue nhiều tài khoản trong Athena cho Spark.

Có hai cách để tài khoản người tiêu dùng có thể truy cập Danh mục dữ liệu nhiều tài khoản từ Athena Spark, tùy thuộc vào việc bạn đang truy vấn từ một tài khoản nhà sản xuất hay nhiều tài khoản.

Truy vấn một bảng nhà sản xuất duy nhất

Nếu chỉ truy vấn dữ liệu từ tài khoản AWS của một nhà sản xuất, bạn có thể yêu cầu Athena Spark chỉ sử dụng danh mục của tài khoản đó để phân giải các đối tượng cơ sở dữ liệu. Khi sử dụng tùy chọn này, bạn không phải sửa đổi SQL vì bạn đang định cấu hình ID tài khoản AWS ở cấp phiên. Để kích hoạt phương pháp này, hãy chỉnh sửa phiên và đặt thuộc tính "spark.hadoop.hive.metastore.glue.catalogid": "999999999999" sử dụng các bước sau:

  1. Trong trình chỉnh sửa sổ ghi chép, trên Phiên menu, chọn Chỉnh sửa phiên.
    Hình ảnh hiển thị nơi nhấp để chỉnh sửa phiên
  2. Chọn Chỉnh sửa bằng JSON.
  3. Thêm thuộc tính sau và chọn Lưu:
    {"spark.hadoop.hive.metastore.glue.catalogid": "999999999999"}Hình ảnh hiển thị vị trí đặt thuộc tính cấu hình JSON để truy vấn một nhà sản xuấtĐiều này sẽ bắt đầu một phiên mới với các thông số được cập nhật.
  4. Chạy câu lệnh SQL sau trong Spark để truy vấn các bảng từ danh mục của tài khoản nhà sản xuất:
    %%sql
    SELECT * FROM <central-catalog-db>.<table> LIMIT 10

Truy vấn nhiều bảng sản xuất

Ngoài ra, bạn có thể thêm ID tài khoản AWS của nhà sản xuất vào mỗi tên cơ sở dữ liệu, điều này rất hữu ích nếu bạn định truy vấn Danh mục dữ liệu từ các chủ sở hữu khác nhau. Để kích hoạt phương pháp này, hãy đặt thuộc tính {"spark.hadoop.aws.glue.catalog.separator": "/"} khi gọi hoặc chỉnh sửa phiên (sử dụng các bước tương tự như phần trước). Sau đó, bạn thêm ID tài khoản AWS cho Danh mục dữ liệu nguồn như một phần của tên cơ sở dữ liệu:

%%sql
SELECT * FROM `<producer-account1-id>/database1`.table1 t1 join `<producer-account2-id>/database2`.table2 t2 ON t1.id = t2.id
limit 10

Nếu bộ chứa S3 thuộc tài khoản AWS của nhà sản xuất được định cấu hình với tính năng Thanh toán của người yêu cầu được bật thì người tiêu dùng sẽ bị tính phí thay vì chủ sở hữu bộ chứa đối với các yêu cầu và lượt tải xuống. Trong trường hợp này, bạn có thể thêm thuộc tính sau khi gọi hoặc chỉnh sửa phiên Athena Spark để đọc dữ liệu từ các nhóm này:

{"spark.hadoop.fs.s3.useRequesterPaysHeader": "true"}

Suy ra lược đồ dữ liệu của bạn trong Amazon S3 và kết hợp với các bảng được thu thập thông tin trong Danh mục dữ liệu

Thay vì chỉ có thể xem qua Danh mục dữ liệu để hiểu cấu trúc bảng, Spark có thể suy ra lược đồ và đọc dữ liệu trực tiếp từ bộ lưu trữ. Tính năng này cho phép các nhà phân tích dữ liệu và nhà khoa học dữ liệu thực hiện khám phá dữ liệu nhanh chóng mà không cần tạo cơ sở dữ liệu hoặc bảng, nhưng cũng có thể được sử dụng với các bảng hiện có khác được lưu trữ trong Danh mục dữ liệu trong cùng một hoặc trên các tài khoản khác nhau. Để thực hiện việc này, chúng tôi sử dụng chế độ xem tạm thời Spark, đây là cấu trúc dữ liệu trong bộ nhớ lưu trữ lược đồ dữ liệu được lưu trữ trong khung dữ liệu.

Sử dụng phân vùng tập dữ liệu NOAA cho năm 2020, chúng tôi tạo chế độ xem tạm thời bằng cách đọc dữ liệu S3 vào khung dữ liệu:

year_20_pq = spark.read.parquet(f"s3://athena-examples-us-east-1/athenasparkblog/noaa-gsod-pds/parquet/2020/")
year_20_pq.createOrReplaceTempView("y20view")

Bây giờ bạn có thể truy vấn y20view sử dụng Spark SQL như thể đó là cơ sở dữ liệu Danh mục dữ liệu:

%%sql
select count(*) from y20view

Đầu ra của truy vấn SQL trước đó hiển thị giá trị đếm

Bạn có thể truy vấn dữ liệu từ cả chế độ xem tạm thời và bảng Danh mục dữ liệu trong cùng một truy vấn trong Spark. Ví dụ: bây giờ chúng ta có một bảng chứa dữ liệu cho các năm 2021 và 2022 và chế độ xem tạm thời với dữ liệu của năm 2020, chúng ta có thể tìm thấy những ngày trong mỗi năm khi nhiệt độ tối đa được ghi lại cho 'SEATTLE TACOMA AIRPORT, WA US'.

Để làm điều này, chúng ta có thể sử dụng hàm cửa sổ và UNION:

%%sql
SELECT date, max as maximum_temperature
FROM ( SELECT date, max, RANK() OVER ( PARTITION BY year ORDER BY max DESC ) rnk FROM sparkblogdb.noaa_pq WHERE name = 'SEATTLE TACOMA AIRPORT, WA US' AND year IN ('2021', '2022') UNION ALL SELECT date, max, RANK() OVER ( ORDER BY max DESC ) rnk FROM y20view WHERE name = 'SEATTLE TACOMA AIRPORT, WA US' ) t
WHERE rnk = 1
ORDER by 1

Bạn nhận được đầu ra sau:

Đầu ra của SQL trước đó

Mở rộng SQL của bạn bằng UDF trong Spark SQL

Bạn có thể mở rộng chức năng SQL của mình bằng cách đăng ký và sử dụng hàm tùy chỉnh do người dùng xác định trong Athena Spark. Các UDF này được sử dụng cùng với các hàm được xác định trước phổ biến có sẵn trong Spark SQL và sau khi được tạo, có thể được sử dụng lại nhiều lần trong một phiên nhất định.

Trong phần này, chúng ta sẽ tìm hiểu một UDF đơn giản có chức năng chuyển đổi giá trị số tháng thành tên tháng đầy đủ. Bạn có tùy chọn viết UDF bằng Java hoặc Python.

UDF dựa trên Java

Mã Java cho UDF có thể được tìm thấy trong Kho GitHub. Đối với bài đăng này, chúng tôi đã tải lên JAR dựng sẵn của UDF để s3://athena-examples-us-east-1/athenasparksqlblog/udf/month_number_to_name.jar.

Để đăng ký UDF, chúng tôi sử dụng Spark SQL để tạo một hàm tạm thời:

%%sql
CREATE OR REPLACE TEMPORARY FUNCTION month_number_to_name as 'com.example.MonthNumbertoNameUDF'
using jar "s3a://athena-examples-us-east-1/athenasparksqlblog/udf/month_number_to_name.jar";

Bây giờ UDF đã được đăng ký, chúng ta có thể gọi nó trong truy vấn để tìm nhiệt độ tối thiểu được ghi lại cho mỗi tháng của năm 2022:

%%sql
select month_number_to_name(month(to_date(date,'yyyy-MM-dd'))) as month_yr_21,
min(min) as min_temp
from sparkblogdb.noaa_pq where NAME == 'SEATTLE TACOMA AIRPORT, WA US' group by 1 order by 2

Bạn nhận được đầu ra sau:

Đầu ra của SQL bằng UDF

UDF dựa trên Python

Bây giờ hãy xem cách thêm Python UDF vào phiên Spark hiện có. Mã Python cho UDF có thể được tìm thấy trong Kho GitHub. Đối với bài đăng này, mã đã được tải lên s3://athena-examples-us-east-1/athenasparksqlblog/udf/month_number_to_name.py.

Không thể đăng ký UDF Python trong Spark SQL, vì vậy thay vào đó, chúng tôi sử dụng một đoạn mã PySpark nhỏ để thêm tệp Python, nhập hàm rồi đăng ký dưới dạng UDF:

sc.addPyFile('s3://athena-examples-us-east-1/athenasparksqlblog/udf/month_number_to_name.py') from month_number_to_name import month_number_to_name
spark.udf.register("month_number_to_name_py",month_number_to_name)

Giờ đây, UDF dựa trên Python đã được đăng ký, chúng ta có thể sử dụng cùng một truy vấn trước đó để tìm nhiệt độ tối thiểu được ghi lại cho mỗi tháng của năm 2022. Thực tế là Python chứ không phải Java bây giờ không còn quan trọng nữa:

%%sql
select month_number_to_name_py(month(to_date(date,'yyyy-MM-dd'))) as month_yr_21,
min(min) as min_temp
from sparkblogdb.noaa_pq where NAME == 'SEATTLE TACOMA AIRPORT, WA US' group by 1 order by 2

Đầu ra phải tương tự như trong phần trước.

Vẽ đồ thị từ các truy vấn SQL

Việc sử dụng Spark SQL rất đơn giản, kể cả trên các tài khoản AWS để khám phá dữ liệu và không phức tạp khi mở rộng Athena Spark bằng UDF. Bây giờ hãy xem cách chúng ta có thể vượt xa SQL bằng cách sử dụng Python để trực quan hóa dữ liệu trong cùng một phiên Spark nhằm tìm kiếm các mẫu trong dữ liệu. Chúng tôi sử dụng bảng và các chế độ xem tạm thời được tạo trước đó để tạo biểu đồ hình tròn hiển thị phần trăm số lần đọc được thực hiện mỗi năm cho trạm 'SEATTLE TACOMA AIRPORT, WA US'.

Hãy bắt đầu bằng cách tạo khung dữ liệu Spark từ truy vấn SQL và chuyển đổi nó thành khung dữ liệu gấu trúc:

#we will use spark.sql instead of %%sql magic to enclose the query string
#this will allow us to read the results of the query into a dataframe to use with our plot command
sqlDF = spark.sql("select year, count(*) as cnt from sparkblogdb.noaa_pq where name = 'SEATTLE TACOMA AIRPORT, WA US' group by 1 union all select 2020 as year, count(*) as cnt from y20view where name = 'SEATTLE TACOMA AIRPORT, WA US'") #convert to pandas data frame
seatac_year_counts=sqlDF.toPandas()

Tiếp theo, đoạn mã sau sử dụng khung dữ liệu pandas và thư viện Matplot để vẽ biểu đồ hình tròn:

import matplotlib.pyplot as plt # clear the state of the visualization figure
plt.clf() # create a pie chart with values from the 'cnt' field, and yearly labels
plt.pie(seatac_year_counts.cnt, labels=seatac_year_counts.year, autopct='%1.1f%%')
%matplot plt

Hình dưới đây cho thấy đầu ra của chúng tôi.

Đầu ra của mã hiển thị biểu đồ hình tròn

Làm sạch

Để xóa các tài nguyên được tạo cho bài đăng này, hãy hoàn tất các bước sau:

  1. Chạy các câu lệnh SQL sau trong ô của sổ ghi chép để xóa cơ sở dữ liệu và bảng khỏi Danh mục Dữ liệu:
    %%sql
    DROP TABLE sparkblogdb.noaa_pq %%sql
    DROP DATABASE sparkblogdb

  2. Xóa nhóm làm việc được tạo cho bài đăng này. Thao tác này cũng sẽ xóa sổ ghi chép đã lưu thuộc nhóm làm việc.
  3. Xóa bộ chứa S3 mà bạn đã tạo như một phần của nhóm làm việc.

Kết luận

Athena Spark giúp việc truy vấn cơ sở dữ liệu và bảng trong Danh mục dữ liệu AWS Glue trực tiếp thông qua Spark SQL trong Athena trở nên dễ dàng hơn bao giờ hết và truy vấn dữ liệu trực tiếp từ Amazon S3 mà không cần kho dữ liệu di động để khám phá dữ liệu nhanh chóng. Nó cũng giúp việc sử dụng các lệnh SQL phổ biến và nâng cao được sử dụng trong Spark SQL trở nên đơn giản, bao gồm cả việc đăng ký UDF cho chức năng tùy chỉnh. Ngoài ra, Athena Spark giúp bạn dễ dàng sử dụng Python trong môi trường máy tính xách tay khởi động nhanh để trực quan hóa và phân tích dữ liệu được truy vấn qua Spark SQL.

Nhìn chung, Spark SQL mở ra khả năng vượt xa SQL tiêu chuẩn trong Athena, mang đến cho người dùng nâng cao tính linh hoạt và sức mạnh cao hơn thông qua cả SQL và Python trong một sổ ghi chép tích hợp duy nhất, đồng thời cung cấp khả năng phân tích dữ liệu nhanh chóng, phức tạp trong Amazon S3 mà không cần thiết lập cơ sở hạ tầng. Để tìm hiểu thêm về Athena Spark, hãy tham khảo Amazon Athena cho Apache Spark.


Về các tác giả

Pathik Shah là Kiến trúc sư phân tích cấp cao trên Amazon Athena. Anh gia nhập AWS vào năm 2015 và kể từ đó tập trung vào lĩnh vực phân tích dữ liệu lớn, giúp khách hàng xây dựng các giải pháp mạnh mẽ và có thể mở rộng bằng dịch vụ phân tích AWS.

Raj Devath là Giám đốc sản phẩm tại AWS trên Amazon Athena. Anh ấy đam mê xây dựng những sản phẩm được khách hàng yêu thích và giúp khách hàng khai thác giá trị từ dữ liệu của họ. Nền tảng của ông là cung cấp các giải pháp cho nhiều thị trường cuối cùng, chẳng hạn như tài chính, bán lẻ, tòa nhà thông minh, tự động hóa gia đình và hệ thống truyền thông dữ liệu.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img