

# AWS Glue: 작동 방식
<a name="how-it-works"></a>

AWS Glue는 다른 AWS 서비스를 통해 추출, 변환, 로드 작업을 오케스트레이션하여 데이터 웨어하우스 및 데이터 레이크를 빌드하고 출력 스트림을 생성합니다. AWS Glue는 API 작업을 호출하여 데이터를 변환하고, 런타임 로그를 생성하고, 작업 로직을 저장하고, 작업 실행을 모니터링하는 데 도움이 되는 알림을 생성합니다. AWS Glue 콘솔은 이런 서비스를 관리형 애플리케이션으로 연결하여 ETL 작업을 생성하고 모니터링하는 데 집중할 수 있습니다. 콘솔은 사용자를 대신하여 관리 및 작업 개발 작업을 수행합니다. 자격 증명 및 기타 속성을 AWS Glue에 제공하여 데이터 원본에 액세스하고 데이터 대상에 작성합니다.

AWS Glue는 워크로그가 실행되도록 필요한 리소스를 프로비저닝 및 관리를 담당합니다. ETL 도구를 사용하기 위해서 인프라를 생성할 필요가 없는 이유는 AWS Glue가 대신하기 때문입니다. 리소스가 필요한 경우, 시작 시간을 줄이기 위해 AWS Glue는 인스턴스의 준비된 풀에서 인스턴스를 사용하여 워크로드를 실행합니다.

AWS Glue를 통해 데이터 카탈로그에서 테이블 정의를 사용하여 작업을 생성합니다. 작업은 원하는 데이터 변환 작업을 실행하는 명령이 포함된 스크립트로 구성됩니다. 트리거를 사용하여 특정 이벤트의 일정에 따라 혹은 결과에 따라 작업을 시작합니다. 대상 데이터가 있는 곳과 어떤 소스 데이터가 대상으로 채우는지 결정합니다. 입력을 기반으로 AWS Glue에서는 소스에서 대상 형식으로 데이터를 변환합니다. 또는 AWS Glue 콘솔 또는 API에서 사용자 지정 스크립트를 제공하여 특정 요구 사항에 따라 데이터를 처리할 수도 있습니다.

**데이터 소스 및 대상**  
AWS Glue for Spark를 사용하면 다음을 포함한 여러 시스템 및 데이터베이스에서 데이터를 읽고 쓸 수 있습니다.
+ Amazon S3
+ Amazon DynamoDB
+ Amazon Redshift
+ Amazon Relational Database Service(Amazon RDS)
+ 타사 JDBC에서 액세스할 수 있는 데이터베이스
+ MongoDB 및 Amazon DocumentDB(MongoDB와 호환)
+ 기타 마켓플레이스 커넥터 및 Apache Spark 플러그인

**데이터 스트림**  
AWS Glue for Spark는 다음 시스템에서 데이터를 스트리밍할 수 있습니다.
+ Amazon Kinesis Data Streams
+ Apache Kafka

AWS Glue는 여러 AWS 리전에서 사용할 수 있습니다. 자세한 내용은 Amazon Web Services 일반 참조의 [AWS Regions and endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)를 참조하세요.

**Topics**
+ [격리 중인 서버리스 ETL 작업 실행](#how-it-works-isolation)
+ [AWS Glue 개념](components-key-concepts.md)
+ [AWS Glue 구성 요소](components-overview.md)
+ [AWS Glue for Spark 및 AWS Glue for Ray](how-it-works-engines.md)
+ [반구조화된 스키마를 AWS Glue가 포함된 관계형 스키마로 변환하기](schema-relationalize.md)
+ [AWS Glue 유형 시스템](glue-types.md)

## 격리 중인 서버리스 ETL 작업 실행
<a name="how-it-works-isolation"></a>

AWS Glue는 선택한 엔진(Spark 또는 Ray)을 사용하여 서버리스 환경에서 ETL 작업을 실행합니다. AWS Glue는 이런 작업을 가상 리소스에서 실행하여 자체 서비스 계정을 프로비저닝하고 관리합니다.

AWS Glue는 다음과 같이 하도록 설계되어 있습니다.
+ 사용자 지점 데이터 분리
+ 전송 및 저장 시 사용자 데이터 보호
+ 사용자 요청에 대항 응답으로만 임시 범위가 축소된 자격 증명 또는 계정의 IAM 역할에 대한 사용자 동의에 따라 사용자 데이터에 액세스합니다.

ETL 작업을 프로비저닝하는 중에 가상 사설 클라우드(VPC)에 입력 데이터 원본 및 출력 데이터 대상을 제공합니다. 또한, 데이터 원본 및 대상에 필요한 IAM 역할, VPC ID, 서브넷 ID 및 보안 그룹을 제공합니다. 각 튜플(사용자 계정 ID, IAM 역할, 서브넷 ID 및 보안 그룹)을 위해 AWS Glue는 AWS Glue 서비스 계정 내 다른 모든 환경의 네트워크 및 관리 수준이 격리된 새로운 환경을 생성합니다.

 AWS 계정 내에서 Data Catalog, 작업 및 크롤러와 같은 AWS Glue 리소스를 생성하고 구성합니다. 그런 다음, 이러한 리소스는 생성 프로세스 중에 지정한 IAM 역할 및 네트워크 설정(서브넷 및 보안 그룹)과 연결됩니다.

AWS Glue는 프라이빗 IP 주소를 사용하여 탄력적 네트워크 인터페이스를 서브넷에 생성합니다. 작업은 탄력적 네트워크 인터페이스를 사용하여 데이터 소스와 데이터 대상에 액세스합니다. VPC 및 네트워크 정책은 다음 한 가지를 제외한 작업 실행 환경 내부 및 외부에 있는 트래픽을 관리합니다. 한 가지 예외 사항은 AWS Glue 라이브러리를 직접 호출하여 프록시 트래픽에서 AWS Glue API 작업을 AWS Glue VPC를 통해 가능하게 한 경우입니다. 모든 AWS Glue API 호출은 로깅됩니다. 따라서 데이터 소유자는 감사 로그를 계정으로 전달하는 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)를 활성화하여 API 액세스를 감사할 수 있습니다.

ETL 작업을 실행하는 AWS Glue 관리형 환경은 뒤이어 다른 AWS 서비스가 따르는 동일한 보안 과정을 통해 보호됩니다. 사례 및 공유 보안 책임에 대한 개요는 [AWS 보안 프로세스 소개](https://docs.aws.amazon.com/whitepapers/latest/introduction-aws-security/welcome.html) 백서를 참조하세요.

# AWS Glue 개념
<a name="components-key-concepts"></a>

 AWS Glue은(는) 완전 관리형 ETL(추출, 변환, 로드) 서비스로서 다양한 데이터 소스 및 타겟 간에 데이터를 쉽게 이동할 수 있습니다. 주요 구성 요소는 다음과 같습니다.
+  **데이터 카탈로그**: ETL 워크플로를 위한 테이블 정의, 작업 정의 및 기타 제어 정보가 포함되어 있는 메타데이터 저장소입니다.
+  **크롤러**: 데이터 소스에 연결하고, 데이터 스키마를 추론하고, 데이터 카탈로그에서 메타데이터 테이블 정의를 만드는 프로그램입니다.
+  **ETL 작업**: 소스에서 데이터를 추출하고, Apache Spark 스크립트를 사용하여 데이터를 변환하고, 타겟에 로드하는 비즈니스 로직입니다.
+  **트리거**: 일정이나 이벤트를 기반으로 작업 실행을 시작하는 메커니즘.

 일반적인 워크플로에는 다음 사항이 포함됩니다.

1.  데이터 카탈로그에서 데이터 소스 및 타겟을 정의합니다.

1.  크롤러를 사용하여 데이터 소스의 테이블 메타데이터로 데이터 카탈로그를 채웁니다.

1.  변환 스크립트로 ETL 작업을 정의하여 데이터를 이동하고 처리합니다.

1.  온디맨드 또는 트리거를 기반으로 작업을 실행합니다.

1.  대시보드를 사용하여 작업 성과를 모니터링합니다.

 다음 다이어그램은 AWS Glue 환경의 아키텍처를 나타냅니다.

![\[Data Catalog를 채우고 AWS Glue의 ETL 데이터 흐름을 처리하는 기본 개념입니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/HowItWorks-overview.png)


AWS Glue에서 *작업*을 정의하여 데이터 원본에서 데이터 대상으로 데이터를 추출, 변환, 로드하는 데 필요한 작업을 수행합니다. 일반적으로 다음 작업을 수행할 수 있습니다.
+ 데이터 스토어 소스의 경우 *크롤러*를 정의하여 메타데이터 테이블 정의로 AWS Glue Data Catalog를 채웁니다. 데이터 스토어에서 크롤러를 포인트하면 크롤러는 Data Catalog에서 테이블 정의를 생성합니다. 스트리밍 소스의 경우 Data Catalog 테이블을 수동으로 정의하고 데이터 스트림 속성을 지정합니다.

  테이블 정의에 관련해 추가하자면 AWS Glue Data Catalog는 다른 필수 메타데이터를 포함하여 ETL 작업을 정의합니다. 작업을 정의하여 데이터를 변환할 경우 이 메타데이터를 사용합니다.
+ AWS Glue는 스크립트를 생성하여 데이터를 변환할 있습니다. 또는 스크립트를 AWS Glue 콘솔이나 API에 제공합니다.
+ 필요시 작업하거나 지정된 *trigger*가 발생하면 작업을 설정하여 시작할 수 있습니다. 트리거는 시간 기반 스케줄이나 이벤트일 수 있습니다.

  작업이 진행되면 스크립트는 데이터 원본에서 데이터를 추출하고 데이터를 변환한 다음 데이터 대상으로 로드합니다. 스크립트는 AWS Glue의 Apache Spark 환경에서 실행됩니다.

**중요**  
AWS Glue에 있는 테이블과 데이터베이스는 AWS Glue Data Catalog의 객체입니다. 이 객체들은 메타데이터를 포함하지만 데이터 스토어의 데이터는 포함하지 않습니다.


|  | 
| --- |
|  **CSV와 같은 텍스트 기반 데이터를 처리하려면 AWS Glue용으로 `UTF-8`에 인코딩해야 합니다. 자세한 내용은 Wikipedia의 [UTF-8](https://en.wikipedia.org/wiki/UTF-8)을 참조하세요.**  | 

## AWS Glue 용어
<a name="components-major"></a>

AWS Glue에서는 여러 구성 요소의 상호 작용에 의존하여 추출, 전환, 적재(ETL) 워크플로를 생성하고 관리합니다.

### AWS Glue Data Catalog
<a name="components-data-catalog"></a>

AWS Glue의 영구적 메타데이터 스토어입니다. 테이블 정의, 작업 정의 및 기타 관리 정보를 포함하여 AWS Glue 환경을 관리합니다. 각 AWS 계정에는 리전당 AWS Glue Data Catalog 하나가 있습니다.

### 분류자
<a name="components-classifier"></a>

데이터 스키마를 결정합니다. AWS Glue는 CSV, JSON, AVRO, XML 등과 같은 일반 파일 형식에 대한 분류자를 제공합니다. JDBC 연결을 사용한 일반 관계형 데이터베이스 관리 시스템을 위한 분류자를 제공합니다. a grok 패턴을 사용하거나 XML 문서에 행 태그를 지정하여 자체 분류자를 작성할 수 있습니다.

### 연결
<a name="components-connection"></a>

특정 데이터 스토어에 연결하는 데 필요한 속성을 포함하는 Data Catalog 객체입니다.

### 크롤러
<a name="components-crawler"></a>

데이터 스토어(소스 또는 대상)에 연결하는 프로그램은 분류자의 우선 순위 지정 목록을 통해 데이터의 스키마를 결정한 다음 AWS Glue Data Catalog에 메타데이터 테이블을 생성합니다.

### 데이터베이스
<a name="components-database"></a>

논리 그룹으로 구성된 일련의 연결된 Data Catalog 테이블 정의입니다.

### 데이터 스토어, 데이터 원본, 데이터 대상
<a name="components-data-store"></a>

*데이터 스토어*는 데이터를 영구적으로 저장하기 위한 리포지토리입니다. 예를 들면 Amazon S3 버킷과 관계형 데이터베이스가 있습니다. *데이터 원본*은 프로세스 또는 변환의 입력값으로 사용되는 데이터 스토어입니다. *데이터 대상*은 프로세스 또는 변환에서 쓰기를 수행하는 대상 데이터 스토어입니다.

### 개발 엔드포인트
<a name="components-development-endpoint"></a>

AWS Glue ETL 스크립트를 개발하고 테스트하는 데 사용할 수 있는 환경입니다.

### 동적 프레임
<a name="components-dynamic-frame"></a>

구조 및 배열과 같은 중첩 데이터를 지원하는 분산 테이블입니다. 각 레코드는 자기 설명적이며 반정형 데이터가 있는 스키마 유연성을 위해 설계되었습니다. 각 레코드에는 데이터와 해당 데이터를 설명하는 스키마가 모두 포함되어 있습니다. ETL 스크립트에서 동적 프레임과 Apache Spark DataFrame을 모두 사용하여 이 두 프레임 간에 변환할 수 있습니다. 동적 프레임은 데이터 정리 및 ETL에 필요한 고급 변환 세트를 지원합니다.

### 작업
<a name="components-job"></a>

작업은 ETL 작업을 수행하는 데 필요한 비즈니스 로직입니다. 변환 스크립트, 데이터 원본 및 데이터 대상으로 구성됩니다. 작업은 트리거에 의해 시작되고, 트리거는 예약되거나 이벤트 기반으로 작동할 수 있습니다.

### 작업 성능 대시보드
<a name="features-job-monitoring"></a>

AWS Glue는 ETL 작업에 대한 포괄적인 실행 대시보드를 제공합니다. 대시보드에는 특정 기간의 작업 실행에 대한 정보가 표시됩니다.

### 노트북 인터페이스
<a name="components-notebook-server"></a>

간편한 작업 작성 및 데이터 탐색을 위해 원클릭 설정으로 향상된 노트북 환경. 노트북과 연결이 자동으로 구성됩니다. Jupyter Notebook 기반의 노트북 인터페이스를 통해 AWS Glue 서버리스 Apache Spark ETL 인프라를 사용하여 스크립트와 워크플로를 대화형으로 개발, 디버깅, 배포할 수 있습니다. 노트북 환경에서 임시 쿼리, 데이터 분석, 시각화(예: 테이블 및 그래프)를 수행할 수도 있습니다.

### Script
<a name="components-script"></a>

소스에서 데이터를 추출하고 변환하고 대상으로 로드하는 코드입니다. AWS Glue는 PySpark 또는 Scala 스크립트를 생성합니다.

### 표
<a name="components-table"></a>

데이터를 나타내는 메타데이터 정의입니다. 데이터가 Amazon Simple Storage Service(Amazon S3) 파일, Amazon Relational Database Service(Amazon RDS) 테이블 또는 다른 데이터 집합에 있는지에 관계없이 테이블은 데이터의 스키마를 정의합니다. AWS Glue Data Catalog의 테이블은 열 이름, 데이터 유형 정의, 파티션 정보 및 베이스 데이터 세트에 대한 기타 메타데이터로 구성됩니다. 데이터의 스키마는 AWS Glue 테이블 정의에 나타납니다. 실제 데이터는 파일 혹은 관계형 데이터베이스 테이블 어디에 있든지 기존 데이터 스토어에 남겨집니다. AWS Glue는 파일과 관계형 데이터베이스 테이블 목록을 AWS Glue Data Catalog에 작성합니다. ETL 작업을 생성할 경우 소스와 대상로써 사용됩니다.

### 변환
<a name="components-transform"></a>

다른 포맷으로 데이터를 바꾸는 코드 로직.

### 트리거
<a name="components-trigger"></a>

ETL 작업 시작. 트리거는 정해진 시간 혹은 이벤트 기반으로 정의할 수 있습니다.

### 시각적 작업 편집기
<a name="features-visual-editor"></a>

 시각적 작업 편집기는 AWS Glue에서 추출, 전환, 적재(ETL) 작업을 쉽게 생성, 실행, 모니터링할 수 있게 해주는 그래픽 인터페이스입니다. 데이터 변환 워크플로를 시각적으로 구성하고 AWS Glue의 Apache Spark 기반 서버리스 ETL 엔진에서 원활하게 실행하며 작업의 각 단계에서 스키마와 데이터 결과를 검사할 수 있습니다.

### 작업자
<a name="components-worker"></a>

AWS Glue를 사용하면 ETL 작업을 실행하는 데 걸리는 시간 요금만 결제하면 됩니다. 관리할 리소스와 사전 투자 비용이 없으며 시작 시간 또는 종료 시간에 대한 요금이 부과되지 않습니다. ETL 작업을 실행하는 데 사용된 **데이터 처리 단위**(DPU) 수에 따라 시간당 요금이 청구됩니다. 단일 데이터 처리 단위(DPU)를 **작업자라고도 합니다. AWS Glue에는 작업 대기 시간 및 비용 요구 사항을 충족하는 구성을 선택하는 데 도움이 되는 여러 작업자 유형이 있습니다. 작업자는 표준, G.1X, G.2X, G.4X, G.8X, G.12X, G.16X, G.025X 및 메모리 최적화 R.1X, R.2X, R.4X, R.8X 구성으로 제공됩니다.

# AWS Glue 구성 요소
<a name="components-overview"></a>

AWS Glue는 콘솔 및 API 작업을 제공하여 워크로드를 추출, 변환 및 로드(ETL)하는 것을 설정하고 관리합니다. 특정 언어의 SDK 및 AWS Command Line Interface(AWS CLI)를 통해 API 작업을 사용할 수 있습니다. AWS CLI 사용에 대한 자세한 내용은 [AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/)를 참조하세요.

AWS Glue는 AWS Glue Data Catalog를 사용하여 데이터 원본, 변환 및 대상의 메타데이터를 저장합니다. Data Catalog는 Apache Hive Metastore의 드롭인 교체물입니다. AWS Glue Jobs system는 데이터의 ETL 작업을 정의, 일정 관리 및 실행하기 위한 관리된 인프라를 제공합니다. AWS Glue API에 대한 자세한 내용은 [AWS Glue API](aws-glue-api.md)을 참조하십시오.

## AWS Glue 콘솔
<a name="console-intro"></a>

AWS Glue 콘솔을 사용하여 ETL 워크플로우를 정의하고 관리할 수 있습니다. 콘솔은 AWS Glue Data Catalog 및 AWS Glue Jobs system에서 몇 가지 API 작업을 호출하여 다음 작업을 실행합니다.
+ 작업, 테이블, 크롤러 및 연결과 같은 AWS Glue 객체를 정의합니다.
+ 크롤러를 실행하는 일정
+ 작업 트리거를 위한 이벤트 또는 일정을 정의합니다.
+ AWS Glue 객체 목록을 검색하고 필터링합니다.
+ 변환 스크립트를 편집합니다.

## AWS Glue Data Catalog
<a name="data-catalog-intro"></a>

 AWS Glue Data Catalog는 AWS 클라우드에 있는 영구적 기술 메타데이터 스토어입니다.

각 AWS 계정에는 AWS 리전당 AWS Glue Data Catalog가 하나씩 있습니다. 각 데이터 카탈로그는 데이터베이스로 구성된 확장성이 뛰어난 테이블 모음입니다. 테이블은 Amazon RDS, Apache Hadoop 분산 파일 시스템, Amazon OpenSearch Service 등의 소스에 저장된 정형 또는 반정형 데이터 모음을 메타데이터로 표현한 것입니다. AWS Glue Data Catalog는 일정한 리포지토리를 제공합니다. 그러면 전혀 다른 시스템들이 메타데이터를 저장하고 탐색하여 데이터 사일로에서 데이터를 추적할 수 있습니다. 그런 다음 메타데이터를 사용하여 다양한 애플리케이션에서 일관된 방식으로 해당 데이터를 쿼리하고 변환할 수 있습니다.

 데이터 카탈로그를 AWS Identity and Access Management 정책 및 Lake Formation과 함께 사용하여 테이블 및 데이터베이스에 대한 액세스를 제어합니다. 이렇게 하면 기업의 여러 그룹이 더 광범위한 조직에 데이터를 안전하게 게시하면서 매우 세분화된 방식으로 민감한 정보를 보호할 수 있습니다.

데이터 카탈로그는 CloudTrail 및 Lake Formation과 함께 스키마 변경 추적 및 데이터 액세스 제어와 함께 포괄적인 감사 및 거버넌스 기능도 제공합니다. 이렇게 하면 데이터가 부적절하게 수정되거나 실수로 공유되지 않도록 보장할 수 있습니다.

 AWS Glue Data Catalog 보안 및 감사에 대한 자세한 내용은 다음을 참조하세요.
+  **AWS Lake Formation** – 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [AWS Lake Formation이란 무엇입니까?](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html)를 참조하세요.
+  **CloudTrail** – 자세한 내용은 *AWS CloudTrail 사용 설명서*의 [CloudTrail이란 무엇입니까?](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하세요.

다음은 AWS Glue Data Catalog를 사용하는 기타 AWS 서비스 및 오픈 소스 프로젝트입니다.
+ **Amazon Athena** – 자세한 내용은 *Amazon Athena 사용 설명서*의 [테이블, 데이터베이스, 데이터 카탈로그 이해](https://docs.aws.amazon.com/athena/latest/ug/understanding-tables-databases-and-the-data-catalog.html)를 참조하세요.
+ **Amazon Redshift Spectrum** – 자세한 내용은 *Amazon Redshift 데이터베이스 개발자 안내서*의 [Amazon Redshift Spectrum을 사용하여 외부 데이터 쿼리](https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html)를 참조하세요.
+ **Amazon EMR** – 자세한 내용은 *Amazon EMR 관리 안내서*의 [AWS Glue Data Catalog에 대한 Amazon EMR 액세스에 리소스 기반 정책 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-iam-roles-glue.html)을 참조하세요.
+ **Apache Hive 메타스토어용 AWS Glue Data Catalog 클라이언트** – 이 GitHub 프로젝트에 대한 자세한 내용은 [AWS Glue Data Catalog Client for Apache Hive Metastore](https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore)를 참조하세요.



## AWS Glue 크롤러 및 분류자
<a name="crawling-intro"></a>

AWS Glue는 모든 종류의 리포지토리에서 데이터를 스캔하고 분류하며, 스키마 정보를 추출하고, AWS Glue Data Catalog에서 자동적으로 메타데이터를 저장하는 크롤러를 설정할 수 있습니다. AWS Glue Data Catalog를 사용하여 ETL 작업을 관리할 수 있습니다.

크롤러 및 분류자 설정 방법에 대한 자세한 내용은 [크롤러를 사용하여 데이터 카탈로그 채우기](add-crawler.md) 단원을 참조하십시오. AWS Glue API를 사용하는 크롤러 및 분류자를 프로그래밍하는 방법에 대한 자세한 내용은 [크롤러 및 분류자 API](aws-glue-api-crawler.md) 단원을 참조하십시오.

## AWS Glue ETL 연산
<a name="etl-script-intro"></a>

Data Catalog에서 메타데이터를 사용하여 AWS Glue는 다양한 ETL 작업을 실행할 때 사용하고 수정할 수 있는 AWS Glue 확장자를 붙여 Scala 또는 PySpark(Apache Spark용 Python API) 스크립트를 자동으로 생성할 수 있습니다. 예를 들어, 원 데이터를 추출, 정리 및 변환한 다음 결과가 쿼리되고 분석될 수 있는 다른 리포지토리에 결과를 저장할 수 있습니다. 이러한 스크립트는 CSV 파일을 관계 형식으로 변환하고 Amazon Redshift에 저장할 수 있습니다.

AWS Glue ETL 기능을 사용하는 방법에 대한 자세한 내용은 [Spark 스크립트 프로그래밍](aws-glue-programming.md) 단원을 참조하십시오.

## AWS Glue의 스트리밍 ETL
<a name="streaming-etl-intro"></a>

AWS Glue를 사용하면 지속적으로 실행되는 작업을 사용하여 스트리밍 데이터에 대해 ETL 작업을 수행할 수 있습니다. AWS Glue 스트리밍 ETL은 Apache Spark Structured Streaming 엔진을 기반으로 하며 Amazon Kinesis Data Streams, Apache Kafka 및 Amazon Managed Streaming for Apache Kafka (Amazon MSK)에서 스트림을 수집할 수 있습니다. 스트리밍 ETL은 스트리밍 데이터를 정리하고 변환하여 Amazon S3 또는 JDBC 데이터 스토어에 로드할 수 있습니다. AWS Glue의 스트리밍 ETL을 사용하여 IoT 스트림, 클릭스트림 및 네트워크 로그와 같은 이벤트 데이터를 처리합니다.

스트리밍 데이터 원본의 스키마를 알고 있는 경우 Data Catalog 테이블에서 지정할 수 있습니다. 그렇지 않은 경우 스트리밍 ETL 작업에서 스키마 감지를 사용할 수 있습니다. 그런 다음 작업은 들어오는 데이터에서 스키마를 자동으로 결정합니다.

스트리밍 ETL 작업은 AWS Glue 기본 제공 변환과 Apache Spark Structured Streaming에 대한 기본 변환을 모두 사용할 수 있습니다. 자세한 내용은 Apache Spark 웹 사이트의 [Operations on streaming DataFrames/Datasets](https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#operations-on-streaming-dataframesdatasets)를 참조하세요.

자세한 내용은 [AWS Glue에서 스트리밍 ETL 작업](add-job-streaming.md) 섹션을 참조하세요.

## AWS Glue 작업 시스템
<a name="job-orchestration-intro"></a>

AWS Glue Jobs system는 관리된 인프라를 사용하여 ETL 워크플로우를 관리할 수 있습니다. 사용하는 스크립트를 통해 자동적으로 데이터를 다른 위치로 추출, 변환 및 전송할 수 있는 작업을 AWS Glue에 생성할 수 있습니다. 작업은 일정이 정해지고 모을 수 있고 새로운 데이터가 도착하는 것과 같은 이벤트에 의해 촉발될 수 있습니다.

AWS Glue Jobs system 사용에 대한 자세한 내용은 [AWS Glue 모니터링](monitor-glue.md) 단원을 참조하십시오. AWS Glue Jobs system API를 사용하여 프로그래밍하는 것에 대한 자세한 내용은 [작업 API](aws-glue-api-jobs.md) 단원을 참조하십시오.

## 시각적 ETL 구성 요소
<a name="glue-studio-ui-components"></a>

 AWS Glue에서는 사용자가 조작할 수 있는 시각적 캔버스를 통해 ETL 작업을 생성할 수 있습니다.

![\[스크린샷에는 닫혀 있는 리소스 패널이 나와 있습니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/glue-studio-canvas.png)


### ETL 작업 메뉴
<a name="glue-studio-ui-components-menu"></a>

 캔버스 상단의 메뉴 옵션을 통해 작업에 대한 다양한 보기 및 구성 세부 정보에 액세스할 수 있습니다.
+  **시각적** - 시각적 작업 편집기 캔버스입니다. 여기서 노드를 추가하여 작업을 생성할 수 있습니다.
+  **스크립트** - ETL 작업의 스크립트 표현입니다. AWS Glue는 작업의 시각적 표현을 기반으로 스크립트를 생성합니다. 스크립트를 편집하거나 다운로드할 수도 있습니다.
**참고**  
 스크립트를 편집하려는 경우 작업 작성 환경이 스크립트 전용 모드로 영구적으로 전환됩니다. 이후에는 더 이상 시각적 편집기를 사용하여 작업을 편집할 수 없습니다. 스크립트 편집을 선택하기 전에 모든 작업 소스, 변환 및 대상을 추가하고 시각적 편집기를 사용하여 필요한 모든 변경 사항을 수행해야 합니다.
+  **작업 세부 정보** - 작업 세부 정보 탭에서는 작업 속성을 설정하여 작업을 구성할 수 있습니다. 여기에는 기본 속성(예: 작업 이름 및 설명, IAM 역할, 작업 유형, AWS Glue 버전, 언어, 작업자 유형, 작업자 유형, 작업자 수, 작업 북마크, Flex 실행, 사용 중지 횟수, 작업 제한 시간 초과)과 함께, 연결, 라이브러리, 작업 파라미터, 태그와 같은 고급 속성도 있습니다.
+  **실행** - 작업을 실행한 후 이 탭에 액세스하여 이전 작업 실행을 볼 수 있습니다.
+  **데이터 품질** - 데이터 품질에서는 데이터 자산의 품질을 평가하고 모니터링합니다. 이 탭에서 데이터 품질을 사용하는 방법에 대해 자세히 알아보고 작업에 데이터 품질 변환을 추가할 수 있습니다.
+  **일정** - 예약한 작업이 이 탭에 표시됩니다. 이 작업에 연결된 일정이 없는 경우 이 탭에는 액세스할 수 없습니다.
+  **버전 제어** - 작업을 Git 리포지토리로 구성하여 작업에서 Git를 사용할 수 있습니다.

### 시각적 ETL 패널
<a name="glue-studio-ui-components-panels"></a>

 캔버스에서 작업하는 경우 노드를 구성하거나 데이터를 미리 보고 출력 스키마를 보는 데 도움이 되는 여러 패널을 사용할 수 있습니다.
+  **속성** - 캔버스에서 노드를 선택하면 속성 패널이 나타납니다.
+  **데이터 미리 보기** - 데이터 미리 보기 패널에서는 데이터 출력의 미리 보기를 제공하므로 작업을 실행하기 전에 결정을 내리고 출력을 살펴볼 수 있습니다.
+  **출력 스키마** - 출력 스키마 탭을 사용하면 변환 노드의 스키마를 보고 편집할 수 있습니다.

 **패널 크기 조정** 

 데이터 미리 보기 및 출력 스키마 탭이 포함된 하단 패널과 화면 오른쪽에 있는 속성 패널은 패널 가장자리를 클릭한 상태로 좌우 또는 위아래로 끌어 크기를 조정할 수 있습니다.
+  **속성 패널** - 화면 오른쪽의 캔버스 가장자리를 클릭한 상태로 끌어 속성 패널의 크기를 조정한 후 왼쪽으로 끌어 너비를 확장합니다. 기본적으로 패널은 축소된 상태이며, 노드를 선택하면 속성 패널이 기본 크기로 열립니다.
+  **데이터 미리 보기 및 출력 스키마 패널** - 화면 하단에서 캔버스 하단 가장자리를 클릭한 상태로 끌어 하단 패널의 크기를 조정한 후 위로 끌어 높이를 확장합니다. 기본적으로 패널은 축소된 상태이며, 노드를 선택하면 하단 패널이 기본 크기로 열립니다.

### 작업 캔버스
<a name="glue-studio-ui-components-canvas"></a>

 시각적 ETL 캔버스에서 직접 노드를 추가, 제거, 이동/재정렬할 수 있습니다. 작업 캔버스는 데이터 소스로 시작하고 데이터 대상으로 끝날 수 있는 완전한 기능을 갖춘 ETL 작업을 생성할 수 있는 작업 공간과 같습니다.

 캔버스에서 노드에 대한 작업을 수행할 때 확대 및 축소, 노드 제거, 노드 간 연결 설정 또는 편집, 작업 흐름 방향 변경, 작업 실행 취소 또는 재실행 등을 도와주는 도구 모음이 있습니다.

![\[스크린샷에는 닫혀 있는 리소스 패널이 나와 있습니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/glue-studio-canvas-toolbar.png)


 부동 도구 모음은 캔버스의 오른쪽 상단 크기로 고정되어 있으며 다음과 같이 작업을 수행하는 여러 이미지를 포함합니다.
+  **레이아웃 아이콘** - 도구 모음의 첫 번째 아이콘은 레이아웃 아이콘입니다. 기본적으로 시각적 작업의 방향은 위에서 아래 방향입니다. 노드를 왼쪽에서 오른쪽으로 가로로 정렬하여 시각적 작업의 방향을 재정렬할 수 있습니다. 레이아웃 아이콘을 다시 클릭하면 방향이 위에서 아래로 다시 바뀝니다.
+  **가운데 재정렬 아이콘** - 가운데 재정렬 아이콘은 캔버스 보기를 가운데에 배치하여 변경합니다. 대규모 작업의 경우 이 아이콘을 사용하여 가운데 위치로 돌아갈 수 있습니다.
+  **확대 아이콘** - 확대 아이콘은 캔버스의 노드 크기를 확대합니다.
+  **축소 아이콘** - 축소 아이콘은 캔버스의 노드 크기를 축소합니다.
+  **휴지통 아이콘** - 휴지통 아이콘은 시각적 작업에서 노드를 제거합니다. 먼저 노드를 선택해야 합니다.
+  **실행 취소 아이콘** - 실행 취소 아이콘은 시각적 작업에서 수행한 마지막 작업을 되돌립니다.
+  **다시 실행 아이콘** - 다시 실행 아이콘은 시각적 작업에서 수행한 마지막 작업을 반복합니다.

 **미니 맵 사용** 

![\[스크린샷에는 클로즈업된 미니 맵이 나와 있습니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/glue-studio-canvas-minimap.png)


### 리소스 패널
<a name="glue-studio-ui-components-canvas-resource-panel"></a>

 리소스 패널에는 사용자가 사용할 수 있는 모든 데이터 소스, 변환 작업 및 연결이 포함되어 있습니다. '\$1' 아이콘을 클릭하여 캔버스에서 리소스 패널을 엽니다. 그러면 리소스 패널이 열립니다.

 리소스 패널을 닫으려면 리소스 패널의 오른쪽 상단에 있는 **X**를 클릭합니다. 그러면 패널을 다시 열 준비가 될 때까지 패널을 숨깁니다.

![\[스크린샷에는 열려 있는 리소스 패널이 나와 있습니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/resource-panel-open.png)


#### 자주 사용하는 변환 및 데이터
<a name="glue-studio-ui-components-popular-transforms"></a>

 패널 상단에는 **자주 사용하는 변환 및 데이터** 컬렉션이 있습니다. 이 노드는 일반적으로 AWS Glue에서 사용됩니다. 하나를 선택하여 캔버스에 추가합니다. **자주 사용하는 변환 및 데이터** 제목 옆의 삼각형을 클릭하여 **자주 사용하는 변환 및 데이터**를 숨길 수도 있습니다.

 **자주 사용하는 변환 및 데이터** 섹션 아래에서 변환 및 데이터 소스 노드를 검색할 수 있습니다. 내용을 입력하면 결과가 표시됩니다. 검색 쿼리를 길게 입력할수록 결과 목록이 작아집니다. 검색 결과는 노드 이름 및/또는 설명으로 채워집니다. 노드를 선택하여 캔버스에 추가합니다.

#### 변환 및 데이터
<a name="glue-studio-ui-components-transforms-and-data"></a>

 노드를 **변환** 및 **데이터**로 구성하는 두 개의 탭이 있습니다.

 **변환** - **변환** 탭을 선택하면 사용 가능한 모든 변환을 선택할 수 있습니다. 변환을 선택하여 캔버스에 추가합니다. 변환 목록 하단에서 **변환 추가**를 선택할 수도 있습니다. 그러면 [사용자 지정 시각적 변환](https://docs.aws.amazon.com/glue/latest/ug/custom-visual-transform.html) 생성에 관한 설명서의 새 페이지가 열립니다. 단계를 따라 직접 변환을 생성할 수 있습니다. 그러면 변환이 사용 가능한 변환 목록에 표시됩니다.

 **데이터** - 데이터 탭에는 **소스** 및 **대상**의 모든 노드가 포함되어 있습니다. 소스 또는 대상 제목 옆의 삼각형을 클릭하여 소스 및 대상을 숨길 수 있습니다. 삼각형을 다시 클릭하면 숨긴 소스 및 대상을 다시 표시할 수 있습니다. 소스 또는 대상 노드를 선택하여 캔버스에 추가합니다. **연결 관리**를 선택하여 새 연결을 추가할 수도 있습니다. 그러면 콘솔에서 커넥터 페이지가 열립니다.

# AWS Glue for Spark 및 AWS Glue for Ray
<a name="how-it-works-engines"></a>

AWS Glue on Apache Spark(AWS Glue ETL)에서 PySpark를 사용하여 대규모 데이터를 처리하는 Python 코드를 작성할 수 있습니다. Spark는 이 문제에 대한 친숙한 솔루션이지만 Python 중심 배경을 갖춘 데이터 엔지니어는 이 전환이 직관적이지 않다고 생각할 수 있습니다. Spark DataFrame 모델은 이 모델의 기반이 되는 Scala 언어와 Java 런타임을 반영하는 “Pythonic”이 원활하지 않습니다.

AWS Glue에서는 Python 쉘 작업을 사용하여 기본 Python 데이터 통합을 실행할 수 있습니다. 이러한 작업은 단일 Amazon EC2 인스턴스에서 실행되며 해당 인스턴스의 용량에 따라 제한됩니다. 따라서 처리할 수 있는 데이터의 처리량이 제한되고 빅 데이터를 처리할 때 유지 관리 비용이 많이 듭니다.

AWS Glue for Ray를 사용하면 Spark 학습에 많은 투자를 하지 않고도 Python 워크로드를 확장할 수 있습니다. Ray가 더 잘 작동하는 특정 시나리오를 활용할 수 있습니다. 선택권을 제공하여 Spark와 Ray의 장점을 모두 활용할 수 있습니다.

AWS Glue ETL과 AWS Glue for Ray는 기본적으로 다르므로 서로 다른 기능을 지원합니다. 지원되는 기능은 설명서를 참조하세요.

## AWS Glue for Ray란 무엇인가요?
<a name="how-it-works-ray"></a>

Ray는 Python을 중심으로 워크로드를 확장하는 데 사용될 수 있는 오픈 소스 분산 계산 프레임워크입니다. Ray에 대한 자세한 내용은 [Ray 웹사이트](https://www.ray.io/)를 참조하세요. AWS Glue Ray 작업 및 대화형 세션을 활용하면 Ray를 AWS Glue 내에서 사용할 수 있습니다.

AWS Glue for Ray를 사용하여 여러 시스템에서 병렬로 실행되는 계산을 위한 Python 스크립트를 작성할 수 있습니다. Ray 작업 및 대화형 세션에서는 pandas와 같은 친숙한 Python 라이브러리를 사용하여 워크플로를 쉽게 작성하고 실행할 수 있습니다. Ray 데이터 세트에 대한 자세한 내용은 Ray 설명서의 [Ray 데이터 세트](https://docs.ray.io/en/latest/data/dataset.html)를 참조하세요. Pandas에 대한 자세한 내용은 [Pandas 웹 사이트](https://pandas.pydata.org/)를 참조하세요.

AWS Glue for Ray를 사용하면 단 몇 줄의 코드만으로 엔터프라이즈 규모의 빅 데이터에 대해 Pandas 워크플로를 실행할 수 있습니다. AWS Glue 콘솔 또는 AWS SDK에서 Ray 작업을 생성할 수 있습니다. AWS Glue 대화형 세션을 열어 서버리스 Ray 환경에서 코드를 실행할 수도 있습니다. AWS Glue Studio의 시각적 작업은 아직 지원되지 않습니다.

AWS Glue for Ray 작업을 통해 일정에 따라 또는 Amazon EventBridge의 이벤트에 대한 응답으로 스크립트를 실행할 수 있습니다. 작업은 스크립트의 상태와 신뢰성을 이해하는 데 도움이 되는 로그 정보 및 CloudWatch의 모니터링 통계를 저장합니다. AWS Glue 작업 시스템에 대한 자세한 내용은 [AWS Glue에서 Ray 작업 사용](ray-jobs-section.md) 섹션을 참조하세요.

Ray는 부하에 따라 실시간으로 재구성하는 시스템 클러스터에 처리를 분산하여 Python 코드 크기 조정 작업을 자동화합니다. 따라서 특정 워크로드의 가격 대비 성능이 향상될 수 있습니다. Ray 작업에서는 auto Scaling이 AWS Glue 작업 모델에 기본적으로 제공되므로 이 기능을 최대한 활용할 수 있습니다. Ray 작업은 AWS Graviton에서 실행되므로 전반적인 가격 대비 성능이 향상됩니다.

비용 절감 이외에 기본 auto Scaling을 사용하여 클러스터 유지 관리, 조정 및 관리에 시간을 투자하지 않고도 Ray 워크로드를 실행할 수 있습니다. Pandas와 같은 친숙한 기존 오픈 소스 라이브러리와 AWS SDK for Pandas를 사용할 수 있습니다. 그러면 AWS Glue for Ray에서 개발하는 동안 반복 속도가 향상됩니다. AWS Glue for Ray를 사용하면 비용 효율적인 데이터 통합 워크로드를 신속하게 개발하여 실행할 수 있습니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/OJ3ZngYTyNE/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/OJ3ZngYTyNE)


# 반구조화된 스키마를 AWS Glue가 포함된 관계형 스키마로 변환하기
<a name="schema-relationalize"></a>

일반적으로 반구조화된 데이터를 관계형 테이블로 변환하고자 할 것입니다. 개념적으로는 계층적 스키마를 관계형 스키마로 평면화하는 것입니다. AWS Glue는 이 변환을 바로 실행할 수 있습니다.

반구조화된 데이터는 일반적으로 데이터 내 개체를 식별하기 위해서 마크업을 포함합니다. 고정된 스키마없이 중첩된 데이터 구조를 가질 수 있습니다. 반구조화된 데이터에 대한 자세한 내용은 Wikipedia에서 [반구조화된 데이터](https://en.wikipedia.org/wiki/Semi-structured_data)를 참조하십시오.

관계형 데이터는 행과 열로 조직된 테이블이 보여줍니다. 테이블간 관계는 기본 키(PK)와 외래 키(FK) 관계에 의해 표현됩니다. 자세한 내용은 Wikipedia의 [관계형 데이터베이스](https://en.wikipedia.org/wiki/Relational_database)를 참조하십시오.

AWS Glue는 크롤러를 사용하여 반구조화된 데이터용 스키마를 유추합니다. ETL(추출, 변환 및 로드) 작업을 사용하여 데이터를 관계형 스키마로 변환합니다. 예를 들어, JSON 데이터를 Amazon Simple Storage Service(Amazon S3) 소스 파일에서 Amazon Relational Database Service (Amazon RDS) 테이블로 구문 분석해야 할 경우가 있습니다. AWS Glue가 어떻게 스키마간 차이를 다루는지 알면 변환 절차를 이해할 수 있습니다.

이 다이어그램은 AWS Glue가 어떻게 반구조화된 스키마를 관계형 스키마로 변환하는지 보여줍니다.

![\[반구조환된 스키마를 관계형 스키마로 변환하는 절차를 보여주는 플로우\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/HowItWorks-schemaconversion.png)


다이어그램은 다음을 보여 줍니다.
+ 단일 값 `A`는 관계형 열로 바로 변환됩니다.
+ `B1` 및 `B2`인 값 페어는 두 개의 관계형 열로 변환됩니다.
+ 하위 `X` 및 `Y`가 있는 `C` 구조는 두 개의 관계형 열로 변환됩니다.
+ `D[]` 배열은 다른 관계형 테이블을 가리키는 외래 키(FK)가 있는 관계형 열로 변환합니다. 기본 키(PK)와 함께 두 번째 관계형 테이블은 배열 아이템의 오프셋과 값을 포함하는 열을 보유하고 있습니다.

# AWS Glue 유형 시스템
<a name="glue-types"></a>

 AWS Glue는 여러 유형 시스템을 사용하여 매우 다른 방식으로 데이터를 저장하는 데이터 시스템에 대해 다양한 인터페이스를 제공합니다. 이 문서는 AWS Glue 유형 시스템 및 데이터 표준을 명확하게 설명합니다.

## AWS Glue 데이터 카탈로그 유형
<a name="glue-types-catalog"></a>

데이터 카탈로그는 다양한 데이터 시스템인 메타스토어에 저장된 테이블 및 필드의 레지스트리입니다. AWS Glue 크롤러 및 Spark를 사용한 AWS Glue 작업과 같은 AWS Glue 구성 요소가 데이터 카탈로그에 기록하면 내부 유형 시스템을 사용하여 필드 유형을 추적합니다. 이러한 값은 AWS Glue 콘솔에 있는 테이블 스키마의 **데이터 유형** 열에 표시됩니다. 이 유형 시스템은 Apache Hive의 유형 시스템을 기반으로 합니다. Apache Hive 유형 시스템에 대한 자세한 내용은 Apache Hive 위키의 [유형](https://cwiki.apache.org/confluence/display/hive/languagemanual+types)을 참조하세요. 특정 유형 및 지원에 대한 자세한 내용은 스키마 빌더의 일부로 AWS Glue Console에서 예제를 참조하세요.

### 검증, 호환성 및 기타 용도
<a name="w2aac11c31b5b5"></a>

데이터 카탈로그는 유형 필드에 기록된 유형을 검증하지 않습니다. AWS Glue 구성 요소는 데이터 카탈로그를 읽고 쓸 때 서로 호환됩니다. AWS Glue 구성 요소는 또한 Hive 유형과의 높은 호환성을 유지하는 것을 목표로 합니다. 그러나 AWS Glue 구성 요소가 모든 Hive 유형과의 호환성을 보장하지는 않습니다. 이를 통해 데이터 카탈로그의 테이블로 작업할 때 Athena DDL과 같은 도구와의 상호 운용성이 가능합니다.

데이터 카탈로그는 유형을 검증하지 않으므로 다른 서비스에서는 데이터 카탈로그를 사용하여 Hive 유형 시스템 또는 기타 시스템을 엄격하게 준수하는 시스템을 사용하여 유형을 추적할 수 있습니다.

## Spark 스크립트가 포함된 AWS Glue의 유형
<a name="glue-types-spark"></a>

Spark 스크립트가 포함된 AWS Glue가 데이터세트를 해석하거나 변환할 때 스크립트에서 사용된 데이터세트의 인 메모리 표현인 `DynamicFrame`을 제공합니다. `DynamicFrame`의 목표는 Spark `DataFrame`의 목표와 유사합니다. Spark가 데이터에 대한 변환을 예약하고 실행할 수 있도록 데이터세트를 모델링하는 것입니다. `toDF` 및 `fromDF` 메서드를 제공하여 `DynamicFrame`의 유형 표현이 `DataFrame`과 상호 호환되도록 보장합니다.

유형 정보가 유추되거나 `DataFrame`에 제공될 수 있는 경우 달리 문서화되지 않는 한 이를 유추하거나`DynamicFrame`에 제공할 수 있습니다. 특정 데이터 형식에 최적화된 리더 또는 라이터를 제공하는 경우, Spark가 사용자의 데이터를 읽거나 쓸 수 있는 경우 제공된 리더 및 라이터는 문서화된 제한에 따라 데이터를 읽거나 쓸 수 있습니다. 리더 및 라이터에 관한 자세한 내용은 [AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션](aws-glue-programming-etl-format.md) 섹션을 참조하세요.

### 선택 유형
<a name="w2aac11c31b7b7"></a>

`DynamicFrames`는 디스크에서 행 간에 유형이 일치하지 않을 수 있는 값인 데이터 세트의 필드를 모델링하는 메커니즘을 제공합니다. 예를 들어 필드는 특정 행에는 문자열로 저장된 숫자를, 다른 행에는 정수를 포함할 수 있습니다. 이 메커니즘은 `Choice`라고 하는 인 메모리 유형입니다. 선택 열을 구체적인 유형으로 해결하기 위한 `ResolveChoice` 메서드와 같은 변환을 제공합니다. AWS Glue ETL은 일반적인 작업 과정에서 선택 유형을 데이터 카탈로그에 기록하지 않습니다. 선택 유형은 데이터 세트의 DynamicFrame 메모리 모델 컨텍스트에서만 존재합니다. 선택 유형 사용 예는 [코드 예: ResolveChoice, Lambda, 및 ApplyMapping을 사용한 데이터 준비](aws-glue-programming-python-samples-medicaid.md) 섹션을 참조하세요.

## AWS Glue 크롤러 유형
<a name="glue-types-crawler"></a>

크롤러는 데이터세트에 대해 일관되고 사용 가능한 스키마를 생성한 다음 다른 AWS Glue 구성 요소 및 Athena에서 사용할 수 있도록 데이터 카탈로그에 저장하는 것을 목표로 합니다. 크롤러는 데이터 카탈로그의 이전 섹션 [AWS Glue 데이터 카탈로그 유형](#glue-types-catalog)에서 정의된 유형을 다룹니다. 열에 두 개 이상의 유형 값이 포함된 '선택' 유형 시나리오에서 사용 가능한 유형을 생성하기 위해 크롤러는 잠재적 유형을 모델링하는 `struct` 유형을 만듭니다.