메뉴 닫기

Amazon Athena와 Spark SQL로 트랜잭션 테이블 포맷 완벽 활용하기: Iceberg, Hudi, Delta Lake 분석 가이드

AWS Athena와 Spark SQL로 오픈 소스 트랜잭션 테이블 포맷 활용하기

데이터 분석의 세계에서 다양한 데이터 저장 포맷을 사용하는 것은 새로운 것이 아닙니다. 그러나, 데이터의 일관성을 유지하면서도 뛰어난 유연성을 제공하는 수많은 오픈 소스 트랜잭션 테이블 포맷이 등장하면서 이 분야는 더욱 활기를 띠었습니다. 특히, Amazon S3와 결합한 AWS의 데이터 레이크는 이러한 포맷을 활용하는 데 있어 중요한 역할을 하고 있습니다.

이번 포스트에서는 Amazon Athena와 Spark SQL을 활용하여 Apache Iceberg, Apache Hudi 및 Delta Lake와 같은 오픈 소스 트랜잭션 테이블 포맷을 다루는 방법을 소개합니다. 이러한 테이블 포맷이 어떻게 ACID 트랜잭션, upsert 및 delete 기능을 제공하는지를 알아보고, 이를 통해 Amazon S3 기반의 데이터 레이크에서 데이터 처리를 단순화하고 효율적으로 만드는 방법을 탐구해보겠습니다.

사전 준비

시작하기에 앞서 다음의 사전 준비 사항을 완료해야 합니다:

  1. Athena Spark에서 Spark SQL을 실행하기 위한 모든 사전 요구 사항을 충족해야 합니다.
  2. AWS Glue Data Catalog에 sparkblogdb라는 데이터베이스와 noaa_pq라는 테이블을 생성합니다.
  3. Athena 작업 그룹에서 사용하는 AWS IAM 역할에 대해 S3 버킷 및 접두어에 대한 읽기 및 쓰기 권한을 부여합니다.

Apache Iceberg 테이블 작업하기

노트북 세션 설정

먼저, Spark 세션을 생성하거나 편집할 때 Apache Iceberg 옵션을 선택하여 Apache Spark 속성을 설정해야 합니다. 이 과정은 Apache Iceberg를 활용하는 데 필요한 단계이며, 이를 통해 세부 설정을 자동으로 구성할 수 있습니다.

데이터베이스 및 Iceberg 테이블 생성

아래 SQL을 통해 AWS Glue Data Catalog에 icebergdb라는 새로운 데이터베이스를 생성합니다.

CREATE DATABASE icebergdb

이제, icebergdb 데이터베이스 내에 noaa_iceberg라는 Iceberg 테이블을 S3의 데이터 위치에 생성합니다. 테이블은 연도별 파티션으로 구성됩니다.

CREATE TABLE icebergdb.noaa_iceberg(
  station string,
  date string,
  latitude string,
  longitude string,
  ...
  prcp string,
  prcp_attributes string,
  sndp string,
  frshtt string)
USING iceberg
PARTITIONED BY (year string)
LOCATION 's3://<your-S3-bucket>/<prefix>/noaaiceberg/'

테이블에 데이터 삽입

이제 noaa_iceberg Iceberg 테이블에 데이터를 삽입합니다. 이 데이터는 이전에 생성된 Parquet 테이블 sparkblogdb.noaa_pq에서 가져옵니다.

INSERT INTO icebergdb.noaa_iceberg select * from sparkblogdb.noaa_pq

Iceberg 테이블 쿼리

이제 삽입된 데이터를 분석할 수 있습니다. 예를 들어, '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

활용 사례와 교훈

이번 포스트를 통해 AWS Athena에서 Spark SQL을 활용하여 오픈 소스 트랜잭션 테이블 포맷을 사용하는 방법을 배우셨습니다. 다양한 환경에서의 데이터 일관성을 유지하면서 데이터 레이크에서의 효율적인 데이터 처리를 가능하게 하는 이러한 기술은 데이터 분석가에게 많은 혜택을 제공합니다.

협업의 효율성을 최대화하고 데이터 분석의 정확도를 높이기 위해 이러한 접근 방식을 통해 더 많은 실험을 해보시기 바랍니다.

이 글이 여러분의 데이터 분석 작업을 한층 발전시키는 계기가 되길 바랍니다. 추가적인 정보는 AWS의 공식 blog 페이지에서 확인할 수 있습니다.
[1]AWS Big Data Blog: https://aws.amazon.com/blogs/big-data/use-amazon-athena-with-spark-sql-for-your-open-source-transactional-table-formats/


AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!

(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기