ETL에서 AWS를 사용할 때의 선택 항목

5171 단어 DataPipelineETLAWS
이 보도는 그룹AdventCalendar PtW.2019의 7일째 보도에 불과하다.
어제는takatrixGo 언어로 어구 검색을 해보도록 하겠습니다.였어요.

개시하다


ETL 소재로 덮어주세요.
기지를 활용해 작년 말 AWS re:Invent 2018에 나온 글루의 상위판처럼 AWS Lake Formation의 미리보기를 신청해 내용을 변경하면 좋겠지만, 능력이 부족해 신경 쓸 필요 없으니 기록해 두세요.
적어도 글루는 피하고 지금은 DataPipeline 중심의 콘텐츠로 선택을 망설이는 데 도움을 줄 수 있다면 좋겠다.

AWS Data Pipeline


AWS Data Piperline
간단히 말해서 ETL(추출, 변환, 로드)을 수행하는 AWS 서비스입니다.
느낌은 있지만 구성 요소만 연결하면 직관적이고 알기 쉬우며 정식 문서만 읽으면 기본적으로 쓰여 있기 때문에 사용하기가 매우 어렵다.

기초 지식



파이프를 생성한 이미지입니다.위와 같은 것은 템플릿(후술)을 사용하여 만든 것이다.
다음 구성 요소를 정의하고 구성합니다.

Activities


데이터 처리 내용을 정의하는 구성 요소입니다.
뒤에 설명된 DataNodes 및 Resouces 를 사용하여 수행합니다.
  • ShellCommandActivity
  • 셸 명령을 실행하는 데 사용됩니다.실행할 케이스를 직접 쓰거나 S3에 설치된 케이스 스크립트 파일을 실행합니다.
  • SqlActivity
  • SQL 쿼리를 수행합니다.셸과 같은 쿼리를 정의할 수도 있고 S3의 쿼리 파일을 읽고 실행할 수도 있습니다.
  • RedshiftCopyActivity
  • DynamoDB나 S3에서 Amazon Redshift로 데이터를 복사할 때 사용합니다.
  • 기타 종류
  • Data Nodes


    출력에 사용되는 데이터의 위치와 유형에 대한 정의를 입력합니다.
  • DynamoDBDataNode
  • SqlDataNode
  • RedshiftDataNode
  • S3DataNode
  • Schedules


    실행 스케줄 정의.일정을 특별히 정의하지 않고 필요에 따라 집행할 수도 있다.

    Resouces


    Activites 및 Precionditions를 실행하는 컴퓨팅 리소스 에서 EC2 또는 EMR 클러스터를 선택합니다.

    PreConditions


    활동을 실행하기 위한 사전 정의 기준을 정의할 수 있습니다.
    파일이 있는 상태에서 실행할 수도 있고 데이터의 존재를 확인할 수도 있다.
  • DynamoDBDataExists
  • S3KeyExists
  • ShellCommandPrecondition
  • 기타
  • 사용법

  • 기본적으로 상기 구성 요소(다른 구성 요소도 있음)를 정의하고 연결하면 제작할 수 있다.
    예를 들어 데이터가 S3에서 RDS로 이동하면 S3과 RDS의 데이터 노드(관련 정보의 정의도 적절하게 생성)를 만들어 복제 활동과 실행 자원을 만들고 연결한다.
  • 어느 정도의 구성은 용도에 따라 미리 템플릿으로 준비한 것이기 때문에 템플릿 제작의 기초로 편집하는 방법은 비교적 간단하다.
  • 템플릿 유형
  • Load S3data into RDS MySQL table(위 이미지)
  • Export DynamoDB table to S3
  • Run AWS CLI command
  • etc
  • 보태다

  • RDS에서 Aurora를 사용하면 Aurora는 S3 파일을 직접 로드할 수 있습니다. SqlDataNode 등을 만들지 않고 SqlActivity에서 LOAD DATA FROM S3을 정의하여 실행하는 것도 같다.
  • Transform은 기본적으로 조개 스크립트를 쓰는 것이기 때문에 복잡한 처리가 필요하면 PySpark와Scara를 사용할 수 있는 Glue를 사용하는 것이 좋다.
  • 총결산

  • 와 글루가 어떤 차이가 있는지 등 서비스별 차이점은 공식에 기재돼 있다.
  • https://aws.amazon.com/jp/glue/faqs/#AWS_Product_Integrations
  • 여기를 보니 이 기사는 필요 없을 것 같고, 아파치 스파크를 쓰면 글루면 될 것 같아요.또 자원을 정의하는 EC2와 EMR 클러스터에 직접 접근할 수 있고, DataPipeline의 책임 분기점은 이용자에 더 치우쳐 있어 스스로 제어하려면 DataPipeline을 선택할 수 있다.
  • Glue의 경우 RDS를 탑재 목적지와 같은paplic 서브넷에 설치해야 하기 때문에 기본적으로 Glue에서 발판 서버를 보고 개인 위치에 놓인 RDS를 방문해야 하기 때문에 약간 끼워 넣었거나 다른 끼워 넣은 곳이 있을 수 있다.
  • ETL의 관점에서 볼 때 Glue의 데이터 디렉터리는 Amazon Athena에서 직접 사용할 수 있기 때문에 아무것도 하지 않아도 Athena의 컨트롤러에서 Glue의 데이터베이스를 선택하고 참조할 수 있다. 이것만으로도 사용할 가치가 있고 Glue에 α를 추가하는 용도가 있다.
  • 소량의 데이터만 처리하면 실행 시간이 짧다면 사용 제한이 15분으로 확대된 람다도 좋다.
  • 왠지 통일감이 없어진 것 같지만, 허들링이 낮아서 ETL을 가볍게 해보고 싶다면 DataPipeline이라는 선택도 고려해 보세요.

    참고 자료

  • https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-2015-aws-data-pipeline-52837923
  • https://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-aws-glue
  • https://aws.amazon.com/jp/glue/faqs/#AWS_Product_Integrations
  • https://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/what-is-datapipeline.html
  • https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html
  • https://www.qoosky.io/techs/0964aa9fdc
  • 좋은 웹페이지 즐겨찾기