게시된 날짜: Jul 11, 2022

Apache Spark용 Amazon EMR 런타임은 최적화된 성능의 Apache Spark용 런타임 환경으로, Amazon EMR 클러스터 5.28 이상에서 사용 가능하며 기본적으로 설정됩니다. Spark용 Amazon EMR 런타임은 오픈 소스 Spark와 100% 호환되는 API를 갖춰 최대 3배 더 빠릅니다.

오늘 소개해 드릴 결과 조각 캐싱은 Apache Spark용 Amazon EMR 런타임에서 새롭게 제공되는 기능입니다. 이 기능을 활용하면 정적 데이터 하위 집합을 대상으로 실행하는 쿼리 속도를 높일 수 있습니다. TPC-H 벤치마크를 기준으로 진행된 내부 테스트 결과에 따르면, 결과 조각 캐싱 기능 사용 시 롤링 및 증분 창 함수를 사용하는 쿼리의 속도가 최대 15.6배까지 일정하게 높아진 것으로 나타났습니다.

고객이 Amazon S3에 저장하는 데이터는 시간이 지나도 변경되지 않는 경우가 많습니다. 그런데 이러한 데이터 세트를 대상으로 쿼리를 반복 실행하는 경우에는 쿼리를 실행할 때마다 결과를 다시 계산해야 합니다. 가령 전자 상거래 주문 데이터에 지난 30일 동안 배달되거나 반품된 주문 관련 정보가 포함되어 있다고 가정해 보겠습니다. 사용자가 이 데이터에서 1년 동안 나타난 특정 제품 주문의 일별 추세를 비교하려는 경우가 있을 수 있습니다. 모든 주문 데이터는 지난 30일 동안의 데이터를 제외하면 거의 변경되지 않습니다. 하지만 지난 1년 동안의 일일 주문 반품 건을 집계하는 쿼리를 실행하려면 쿼리를 실행할 때마다 365일 동안의 결과를 다시 계산해야 합니다. 하지만 결과 조각 캐싱 사용 시에는 결과 조각이 자동 캐시되므로 이처럼 결과를 매번 다시 계산할 필요가 없습니다. 여기서 ‘결과 조각’이란 Spark 쿼리 계획의 하위 트리에 포함된 결과의 모든 부분입니다. 이처럼 캐시된 결과가 후속 쿼리 실행에서 재사용됩니다. 결과 조각 캐싱 기능을 활용하면 캐시된 데이터를 ‘조각’으로 최대한 재사용할 수 있습니다. 즉, 후속 쿼리에서 결과의 각 부분을 재사용할 수 있습니다. 반면 결과 집합 캐싱 사용 시에는 쿼리가 정확하게 일치해야 캐시에서 결과가 반환됩니다. 결과 조각은 고객이 지정한 S3 버킷에 저장되며 여러 클러스터에서 재사용할 수 있습니다. 그러므로 특히 입력 데이터 세트에 비해 결과의 크기가 훨씬 작은 경우 쿼리를 빠르게 실행할 수 있습니다. 결과 조각 캐싱 사용 시에는 지난 1년 동안의 주문을 집계하는 쿼리를 반복 실행하더라도 지난 30일 동안 변경된 데이터만 계산하면 됩니다. 1년 중 30일보다 오래된 모든 기간에 대해 집계된 결과는 캐시에서 제공할 수 있으므로 쿼리 성능이 대폭 개선됩니다. IoT 이벤트, 클릭스트림 데이터 등 대개 변경이 불가능하며 현재 날짜를 대상으로만 삽입되는 데이터에 대해 실행하는 쿼리의 경우에는 속도가 더욱 빨라집니다. 드물지만 데이터가 수정되더라도 결과 조각 캐싱이 수정 사항을 자동으로 탐지하여 캐시된 데이터를 무효화하므로 데이터의 정확도를 유지할 수 있습니다.

Apache Spark용 Amazon EMR 런타임이 제공되는 모든 리전에서 결과 조각 캐싱을 사용할 수 있습니다.

결과 조각 캐싱 사용을 시작하려면 여기서 설명서를 참조하십시오.