( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )

[ Data Engineering ]

Presto & Athena

1. Presto란?

(Wikipedia) Presto is a high performance, distributed SQL query engine for big data. Its architecture allows users to query a variety of data sources such as Hadoop, AWS S3, Alluxio, MySQL, Cassandra, Kafka, MongoDB and Teradata. One can even query data from multiple data sources within a single query.

  • 요약 : 다양한 데이터의 소스로부터, “SINGLE query”를 통해서 처리할 수 있다!

  • (trend) spark에서 Presto에서 넘어오는 양상!

    ( Spark는 어느 정도의 scripting이 필요하다 )


2. Serverless?

어떠한 서비스를 만들 때, 개인 PC를 항상 켜둘 수 없으므로 EC2라는 가상의 서버를 만든다. 이 서버의 용량을 정해야 하는데, 서비스에 접속하는 유저의 수는 그때 그때 다르다. 그렇다고 무작정 엄청 큰 서버를 사용할 수는 없는 법이다. (비용 문제)

그러기 위해 사용하는 것이 “Sereverless”!


Serverless = 서버가 없다?

  • 실제로 서버가 없는건 아니고, 특정 작업을 수행하기 위해 가상 머신에 서버를 설정하고, 이를 통해 처리하는 것

  • 지속적인 요청이 들어온다면, 지속적으로으로 병렬적인 server를 띄우는 것

    ( server안에서 용량을 정하는 것을 알아서 자동적으로 해결해 주므로 비용적인 문제 해결 )

  • ex) AWS의 Lambda, Athena

  • 이를 통해, 변동하는 유저 수에도 잘 대비하여 서버를 효율적으로 잘 관리할 수 있다!


3. Athena

  • presto 기반의 AWS 빅데이처 처리 플랫폼 ( serverless )
  • partion을 기반으로, S3내의 data를 빠르게 가져와서 ad-hoc분석을 쉽게 할 수 있음
  • parquet 형식의 데이터 처리하기 용이


create table 버튼을 누르면, 다음과 같이 query문을 입력할 수 있음

figure2


4. Athena 통해 테이블 생성하기

  • (1) Top Tracks 테이블 생성

    • querey문에, parquet 형식의 데이터가 존재하는 path로 지정해준다.
    • 파티션을 추가한 후, MSCK REPAIR TABLE 명령을 사용하여 데이터를 업데이트한다.

figure2


  • (2) Audio Features 테이블 생성

figure2


5. Presto - Functions & Operators

figure2

위 사이트를 통해서 구체적인 함수들을 확인할 수 있다.