2단계: 데이터 소스 및 분류자 선택 - AWS Glue

2단계: 데이터 소스 및 분류자 선택

다음으로 크롤러의 데이터 소스 및 분류자를 구성합니다.

지원되는 데이터 소스에 대한 자세한 내용은 크롤링에 지원되는 데이터 소스 섹션을 참조하세요.

데이터 소스 구성

데이터가 이미 매핑되어 있는지에 대한 적절한 옵션을 선택합니다.AWS Glue 테이블? '아직 없음' 또는 '예'를 선택합니다. 기본적으로 '아직'이 선택됩니다.

크롤러는 크롤의 원본으로 데이터 스토어에 직접 액세스하거나 데이터 카탈로그의 기존 테이블을 원본으로 사용할 수 있습니다. 크롤러가 기존 카탈로그 테이블을 사용하면 해당 카탈로그 테이블에 지정된 데이터 스토어가 크롤됩니다.

  • 아직 안 됨: 크롤링할 데이터 소스를 하나 이상 선택합니다. 크롤러는 다양한 유형(Amazon S3, JDBC등)의 여러 데이터 스토어를 크롤링할 수 있습니다.

    한 번에 하나의 데이터 스토어만 구성할 수 있습니다. 연결 정보를 제공하고 경로를 포함하고 패턴을 제외하면 다른 데이터 스토어를 추가할 수 있습니다.

  • 예: 에서 기존 테이블 선택 AWS Glue 데이터 카탈로그. 카탈로그 테이블은 크롤할 데이터 스토어를 지정합니다. 크롤러는 단일 실행으로 카탈로그 테이블만 크롤할 수 있습니다. 다른 원본 유형에서는 혼합할 수 없습니다.

    카탈로그 테이블을 원본으로 지정하는 일반적인 이유는 (데이터 스토어의 구조를 이미 알고 있었으므로) 테이블을 수동으로 생성했으며 크롤러가 새 파티션을 추가하는 등 테이블을 업데이트된 상태로 유지하기 때문입니다. 다른 이유에 대한 설명은 크롤러를 사용하여 수동으로 생성된 Data Catalog 테이블 업데이트 단원을 참조하십시오.

    기존 테이블을 크롤러 원본 유형으로 지정하면 다음 조건이 적용됩니다.

    • 데이터베이스 이름은 선택 사항입니다.

    • Amazon S3 또는 Amazon DynamoDB 또는 Delta Lake 데이터 스토어를 지정하는 카탈로그 테이블만 허용됩니다.

    • 크롤러가 실행되면 새 카탈로그 테이블이 생성되지 않습니다. 기존 테이블은 새 파티션을 추가하는 등 필요에 따라 업데이트됩니다.

    • 데이터 스토어에서 찾은 삭제된 객체는 무시됩니다. 카탈로그 테이블은 삭제되지 않습니다. 대신 크롤러는 로그 메시지를 작성합니다. (SchemaChangePolicy.DeleteBehavior=LOG)

    • 각 Amazon S3 경로에 대해 단일 스키마를 생성하는 크롤러 구성 옵션은 기본적으로 사용되며 사용 중지할 수 없습니다. (TableGroupingPolicy=CombineCompatibleSchemas) 자세한 내용은 각 Amazon S3 포함 경로에 대해 단일 스키마 생성 섹션을 참조하십시오.

    • 다른 원본 유형(예: Amazon S3 또는 Amazon DynamoDB)과 원본으로 카탈로그 테이블을 혼합할 수 없습니다.

Delta 테이블을 사용하려면 먼저 Athena DDL 또는 를 사용하여 Delta 테이블을 생성합니다 AWS Glue API.

Athena를 사용하여 위치를 Amazon S3 폴더로 설정하고 테이블 유형을 'DELTA'로 설정합니다.

CREATE EXTERNAL TABLE database_name.table_name LOCATION 's3://bucket/folder/' TBLPROPERTIES ('table_type' = 'DELTA')

를 사용하여 테이블 파라미터 맵 내에서 테이블 유형을 AWS Glue API지정합니다. 테이블 매개변수에는 다음과 같은 키/값 쌍이 포함되어야 합니다. 테이블을 생성하는 방법에 대한 자세한 내용은 create_table에 대한 Boto3 설명서를 참조하세요.

{ "table_type":"delta" }
데이터 소스

크롤러가 스캔할 데이터 소스 목록을 선택하거나 추가합니다.

(선택 사항) 데이터 소스JDBC로 를 선택하는 경우 JDBC 드라이버 정보가 저장되는 연결 액세스를 지정할 때 자체 드라이버를 사용할 수 있습니다.

포함 경로

크롤러에 무엇을 포함하거나 제외할 것인지 평가할 때 크롤러는 필요한 포함 경로를 평가하는 것으로 시작합니다. Amazon S3, MongoDB, MongoDB Atlas, Amazon DocumentDB(MongoDB 호환) 및 관계형 데이터 스토어의 경우 포함 경로를 지정해야 합니다.

Amazon S3 데이터 스토어의 경우

이 계정에서 경로를 지정할지 혹은 다른 계정에서 경로를 지정할지 선택한 다음 Amazon S3 경로 선택을 위해 찾아봅니다.

Amazon S3 데이터 스토어의 경우 경로 포함 구문은 bucket-name/folder-name/file-name.ext입니다. 버킷에 있는 모든 객체를 크롤하려면 추가 경로에서 버킷 이름을 지정합니다. 제외 패턴은 포함 경로와 상대적입니다.

Delta Lake 데이터 스토어의 경우

델타 테이블에 대한 하나 이상의 Amazon S3 경로를 s3://로 지정bucket/prefix/object.

Iceberg 또는 Hudi 데이터 스토어의 경우

Iceberg 또는 Hudi 테이블 메타데이터가 있는 폴더가 포함된 하나 이상의 Amazon S3 경로를 s3://로 지정합니다.bucket/prefix.

Iceberg 및 Hudi 데이터 스토어의 경우 Iceberg/Hudi 폴더는 루트 폴더의 하위 폴더에 있을 수 있습니다. 크롤러는 경로 아래에 있는 모든 폴더에서 Hudi 폴더를 스캔합니다.

JDBC 데이터 스토어의 경우

Enter <database>/<schema>/<table> 또는 <database>/<table>데이터베이스 제품에 따라 . Oracle Database와 MySQL는 경로에서 스키마를 지원하지 않습니다. 백분율(%) 문자를 로 대체할 수 있습니다.<schema> 또는 <table>. 예를 들어 시스템 식별자(SID)가 인 Oracle 데이터베이스의 경우 orclorcl/%를 입력하여 연결에서 명명된 사용자가 액세스할 수 있는 모든 테이블을 가져옵니다.

중요

이 필드는 대/소문자를 구분합니다.

참고

자체 JDBC 드라이버 버전을 가져오도록 선택한 경우 AWS Glue 크롤러는 에서 리소스를 사용합니다.AWS Glue 제공된 드라이버가 환경에서 실행되도록 하기 위한 작업 및 Amazon S3 버킷. 리소스의 추가 사용량은 계정에 반영됩니다. 드라이버는 추가에 설명된 속성으로 제한됩니다.AWS Glue 연결 .

MongoDB, MongoDB Atlas 또는 Amazon DocumentDB 데이터 스토어의 경우

MongoDB, MongoDB Atlas 및 Amazon DocumentDB(MongoDB와 호환)의 경우 구문은 database/collection입니다.

JDBC 데이터 스토어의 경우 구문은 database-name/schema-name/table-name 또는 입니다database-name/table-name. 구문은 데이터베이스 엔진이 데이터베이스 내에서 스키마를 지원할지 여부에 따라 다릅니다. 예를 들어 MySQL 또는 Oracle과 같은 데이터베이스 엔진의 경우 포함 경로schema-name에 를 지정하지 마세요. 퍼센트 표시(%)를 추가 경로 내 스키마 또는 테이블로 바꿔 데이터베이스 내 모든 스키마 혹은 모든 테이블을 나타냅니다. 퍼센트 표시(%)를 추가 경로 내 데이터베이스로 바꿀 수 없습니다.

최대 이동 깊이(Iceberg 또는 Hudi 데이터 스토어만 해당)

크롤러가 Amazon S3 경로에서 Iceberg 또는 Hudi 메타데이터 폴더를 검색하기 위해 이동할 수 있는 Amazon S3 경로의 최대 깊이를 정의합니다. 이 파라미터의 목적은 크롤러 실행 시간을 제한하는 것입니다. 기본값은 10이고, 최댓값은 20입니다.

제외 패턴

이렇게 하면 크롤에서 특정 파일이나 테이블을 제외할 수 있습니다. 제외 경로는 포함 경로와 상대적입니다. 예를 들어 JDBC 데이터 스토어에서 테이블을 제외하려면 제외 경로에 테이블 이름을 입력합니다.

크롤러는 를 사용하여 JDBC 데이터 스토어에 연결합니다.AWS Glue 연결 문자열이 포함된 JDBC URI 연결입니다. 크롤러는 의 JDBC 사용자 이름과 암호를 사용하여 데이터베이스 엔진의 객체에만 액세스할 수 있습니다.AWS Glue 연결. 크롤러는 JDBC 연결을 통해 액세스할 수 있는 테이블만 생성할 수 있습니다. 크롤러가 JDBC 를 사용하여 데이터베이스 엔진에 액세스하면 URI포함 경로가 Data Catalog에 데이터베이스 엔진의 어떤 테이블이 생성되는지 결정하는 데 사용됩니다. 예를 들어 내 에서 의 포함 경로를 지정SQL하면 내의 MyDatabase/%모든 테이블MyDatabase이 데이터 카탈로그에 생성됩니다. Amazon Redshift에 액세스할 경우, MyDatabase/%의 추가 경로를 지정하면 데이터베이스 MyDatabase의 모든 스키마 내 모든 테이블은 데이터 카탈로그에 생성됩니다. MyDatabase/MySchema/%의 추가 경로를 지정하면 MyDatabase 데이터베이스의 모든 테이블과 MySchema 스키마가 생성됩니다.

추가 경로를 지정한 후, 크롤러에서 객체를 제외합니다. 그렇지 않으면 추가 경로는 하나 이상의 Unix 스타일 glob이 패턴을 제외하는 것을 지정하여 객체를 추가합니다. 이런 패턴은 추가 경로에 적용되어 어떤 객체가 제외되어야 하는지 결정합니다. 또한 이런 패턴은 크롤러가 생성한 테이블의 속성으로 저장됩니다.AWS Glue PySpark 와 같은 확장은 테이블 속성을 create_dynamic_frame.from_catalog읽고 제외 패턴으로 정의된 객체를 제외합니다.

AWS Glue 는 제외 glob 패턴에서 다음 패턴을 지원합니다.

제외 패턴 설명
*.csv .csv로 끝나는 현재 폴더의 객체 이름을 나타내는 Amazon S3 경로에 해당합니다.
*.* 점을 포함한 모든 객체 이름과 해당합니다.
*.{csv,avro} .csv 또는 .avro로 끝나는 객체 이름과 해당합니다.
foo.? 하나의 문자 확장에 따라 foo.으로 시작하는 객체 이름과 해당합니다.
myfolder/* /myfolder/mysource와 같은 myfolder에서 하위 폴더의 한 수준의 객체와 해당합니다.
myfolder/*/* /myfolder/mysource/data와 같은 myfolder에서 하위 폴더의 두 가지 수준의 객체와 해당합니다.
myfolder/** /myfolder/mysource/mydata/myfolder/mysource/data와 같은 myfolder의 모든 하위 폴더의 객체와 해당합니다.
myfolder** myfolder 아래 파일뿐만 아니라 하위 폴더 myfolder도 일치시킵니다(예: /myfolder/myfolder/mydata.txt).
Market* JDBC 데이터베이스의 테이블을 Market_us 및 와 Market같이 로 시작하는 이름과 일치시킵니다. Market_fr

AWS Glue 는 다음과 같이 glob 제외 패턴을 해석합니다.

  • Amazon S3 키를 폴더 계층으로 구분하기 위해 슬래시(/) 문자가 사용됩니다.

  • 별표(*) 문자는 폴더의 경계를 넘지 않고 0개 이상의 이름 구성 요소 문자와 해당합니다.

  • 이중 별표(**) 문자는 폴더 또는 스키마의 경계를 넘지 않고 0개 이상의 이름 구성 요소 문자와 해당합니다.

  • 물음표(?) 문자는 이름 구성 요소의 정확히 1문자에 해당합니다.

  • 역 슬래시(\) 문자는 특수 문자로 해석될 수 있는 이스케이프 문자로 사용됩니다. 표현식 \\는 하나의 백 슬래시에 해당하고 \{는 왼쪽 중괄호에 해당합니다.

  • 대괄호([ ])는 문자 모음 중 한 문자의 이름 구성 요소에 해당하는 괄호 표현식을 생성합니다. 예를 들어, [abc]a, b 혹은 c에 해당합니다. 하이픈(-)은 범위를 지정하는 데 사용되기 때문에 [a-z]a에서 z까지의 범위를 지정합니다 (포괄적). 이런 형식은 혼합될 수 있어 [abce-g]는 a, b, c, e, f, 또는 g에 해당됩니다. 대괄호([) 다음 문자가 느낌표(!)라면, 괄호 표현식이 취소됩니다. 예를 들어, [!a-c]a, b 또는 c를 제외한 모든 문자와 대응합니다.

    괄호 표현식 내에 *, ?\는 자체로 대응됩니다. 취소할 때 하이픈이 괄호 내 첫 번째 문자이거나 ! 다음 첫 번째 문자이면 하이픈(-) 문자는 자체로 대응합니다.

  • 부 패턴이 그룹 내에서 대등하면 중괄호({ })는 그룹과 대응하는 부 패턴 그룹을 포함합니다. 쉼표(,) 문자는 부 패턴을 구분하는 기호입니다. 그룹은 중첩될 수 없습니다.

  • 파일명의 첫 번째 마침표 혹은 점은 매칭 작업에서 일반 문자로 취급합니다. 예를 들어 *가 파일명 .hidden에 해당하는 패턴을 제외합니다.

예 Amazon S3 제외 패턴

각 제외 패턴은 추가 경로에 대응하여 평가됩니다. 예를 들어 다음과 같은 Amazon S3 디렉터리 구조가 있다고 가정하겠습니다.

/mybucket/myfolder/ departments/ finance.json market-us.json market-emea.json market-ap.json employees/ hr.json john.csv jane.csv juan.txt

추가 경로 s3://mybucket/myfolder/에 따르면 다음 예는 패턴을 제외한 결과입니다.

제외 패턴 결과
departments/** departments 아래에 있는 모든 파일 및 폴더를 제외하고 employees 폴더 및 하위 폴더를 포함합니다.
departments/market* market-us.json, market-emea.jsonmarket-ap.json을 제외합니다.
**.csv .csv로 끝나는 이름을 갖는 myfolder의 모든 하위 객체를 제외합니다.
employees/*.csv employees 폴더 내 모든 .csv 파일을 제외합니다
예 Amazon S3 파티션의 하위 집합 제외

일별로 데이터가 분할되었다면 개별 Amazon S3 파티션에 1년의 각 일자가 존재합니다. 따라서 2015년 1월이면 31 파티션이 있습니다. 이제, 1월 첫째 주 데이터만 크롤하고자 한다면 1일부터 7일까지만 남겨놓고 모든 파티션을 제외합니다.

2015/01/{[!0],0[8-9]}**, 2015/0[2-9]/**, 2015/1[0-2]/**

이 glob 형식을 살펴보겠습니다. 첫 번째 부분인 2015/01/{[!0],0[8-9]}**는 2015년 01월 중 08일과 09뿐만 아니라 0으로 시작하지 않는 모든 일자를 제외합니다. "**"는 일수 형식의 접미사로 사용된다는 것을 기억하고 폴더 경계를 더 낮은 수준의 폴더로 지나갑니다. "*"가 사용되면 하위 폴더 수준은 제외되지 않습니다.

두 번째 부분인 2015/0[2-9]/**는 2015년 중 02월에서 09월까지의 일자를 제외합니다.

세 번째 부분인 2015/1[0-2]/**는 2015년 중 10월, 11월 및 12월의 일자를 제외합니다.

예 JDBC 패턴 제외

다음 스키마 구조를 사용하여 JDBC 데이터베이스를 크롤링한다고 가정해 보겠습니다.

MyDatabase/MySchema/ HR_us HR_fr Employees_Table Finance Market_US_Table Market_EMEA_Table Market_AP_Table

추가 경로 MyDatabase/MySchema/%에 따르면 다음 예는 패턴을 제외한 결과입니다.

제외 패턴 결과
HR* HR로 이름이 시작되는 테이블을 제외합니다.
Market_* Market_로 이름이 시작되는 테이블을 제외합니다.
**_Table _Table로 이름이 끝나는 모든 테이블을 제외합니다.
추가 크롤러 소스 파라미터

소스 유형마다 다른 추가 파라미터 집합이 필요합니다.

연결

선택 또는 추가 AWS Glue 연결. 연결에 관한 자세한 내용은 데이터에 연결 단원을 참조하십시오.

추가 메타데이터 - 선택 사항(JDBC데이터 스토어의 경우)

크롤러가 크롤링할 추가 메타데이터 속성을 선택합니다.

  • 댓글: 관련 테이블 수준 및 열 수준 설명을 크롤링합니다.

  • 원시 유형: 테이블 열의 원시 데이터 유형을 추가 메타데이터에 유지합니다. 기본 동작으로 크롤러는 원시 데이터 유형을 Hive 호환 유형으로 변환합니다.

JDBC 드라이버 클래스 이름 - 선택 사항(JDBC데이터 스토어의 경우)

데이터 소스에 연결할 크롤러의 사용자 지정 JDBC 드라이버 클래스 이름을 입력합니다.

  • Postgres: org.postgresql.Driver

  • 내 SQL: com.mysql.jdbc.Driver, com.mysql.cj.jdbc.Driver

  • Redshift: com.amazon.redshift.jdbc.Driver, com.amazon.redshift.jdbc42.Driver

  • Oracle: oracle.jdbc.driver.OracleDriver

  • SQL 서버: com.microsoft.sqlserver.jdbc.SQLServerDriver

JDBC 드라이버 S3 경로 - 선택 사항(JDBC데이터 스토어용)

.jar 파일에 대한 기존 Amazon S3 경로를 선택합니다. 여기에서 크롤러가 데이터 소스에 연결하기 위해 사용자 지정 JDBC 드라이버를 사용할 때 .jar 파일이 저장됩니다.

데이터 샘플링 사용(Amazon DynamoDB, MongoDB, MongoDB Atlas Amazon DocumentDB 데이터 스토어만 해당)

데이터 샘플만 크롤링할지 여부를 선택합니다. 선택하지 않으면 전체 테이블이 크롤링됩니다. 테이블이 높은 처리량 테이블이 아닌 경우 모든 레코드를 스캔하는 데 시간이 오래 걸릴 수 있습니다.

쿼리를 위한 테이블 생성(Delta Lake 데이터 스토어에만 해당)

Delta Lake 테이블 생성 방법을 선택합니다.

  • 기본 테이블 생성: Delta 트랜잭션 로그의 쿼리를 직접 지원하는 쿼리 엔진과 통합할 수 있습니다.

  • Symlink 테이블 생성: 지정된 구성 파라미터를 기반으로 파티션 키로 분할된 매니페스트 파일을 포함하는 symlink 매니페스트 폴더를 생성합니다.

스캔 속도 - 선택 사항(DynamoDB 데이터 스토어에만 해당)

크롤러에서 사용할 DynamoDB 테이블 읽기 용량 단위의 비율을 지정합니다. 읽기 용량 단위는 DynamoDB에서 정의한 용어이며, 초당 해당 테이블에서 수행할 수 있는 읽기 수에 대한 속도 제한기 역할을 하는 숫자 값입니다. 0.1과 1.5 사이의 값을 입력합니다. 값을 지정하지 않으면 기본값은 프로비저닝된 테이블의 경우 0.5이고 온디맨드 테이블의 경우 구성된 최대 용량의 1/4입니다. 프로비저닝된 용량 모드만 AWS Glue 크롤러와 함께 사용해야 합니다.

참고

DynamoDB 데이터 스토어의 경우, 테이블의 읽기 및 쓰기 처리를 위한 프로비저닝된 용량 모드를 설정합니다. AWS Glue 크롤러를 온디맨드 용량 모드와 함께 사용해서는 안 됩니다.

네트워크 연결 - 선택 사항(Amazon S3, Delta, Iceberg, Hudi 및 Catalog 대상 데이터 스토어의 경우)

필요에 따라 이 Amazon S3 대상과 함께 사용할 네트워크 연결을 포함합니다. 각 크롤러는 하나의 네트워크 연결로 제한되므로 다른 Amazon S3 대상도 동일한 연결을 사용하게 됩니다(비워 두면 연결 없음).

연결에 관한 자세한 내용은 데이터에 연결 단원을 참조하십시오.

파일의 하위 집합과 샘플 크기만 샘플링(Amazon S3 데이터 스토어에만 해당)

데이터 집합의 샘플 파일을 크롤링할 때 크롤링할 각 리프 폴더의 파일 수를 지정합니다. 이 기능이 설정되어 있으면 이 데이터 집합의 모든 파일을 크롤링하는 대신 크롤러가 크롤링할 각 리프 폴더의 일부 파일을 무작위로 선택합니다.

샘플링 크롤러는 데이터 포맷에 대한 사전 지식이 있고 폴더의 스키마가 변경되지 않는다는 것을 알고 있는 고객에게 가장 적합합니다. 이 기능을 설정하면 크롤러 런타임이 크게 감소합니다.

유효한 값은 1~249의 정수입니다. 지정하지 않으면 모든 파일이 크롤링됩니다.

후속 크롤러 실행

이 필드는 모든 Amazon S3 데이터 소스에 영향을 주는 글로벌 필드입니다.

  • 모든 하위 폴더 크롤링: 이후에 크롤링할 때마다 모든 폴더를 다시 크롤링합니다.

  • 새 하위 폴더만 크롤링: 마지막 크롤링된 이후에 추가된 Amazon S3 폴더만 크롤링됩니다. 스키마가 호환되는 경우 새 파티션이 기존 테이블에 추가됩니다. 자세한 내용은 새 파티션을 추가하기 위한 증분 크롤링 예약 단원을 참조하십시오.

  • 이벤트 기반 크롤링: Amazon S3 이벤트를 사용하여 크롤링할 폴더를 제어합니다. 자세한 내용은 Amazon S3 이벤트 알림을 사용하여 크롤링 가속화 단원을 참조하십시오.

사용자 지정 분류자 - 선택 사항

크롤러를 정의하기 전에 사용자 지정 분류자를 정의합니다. 분류자는 지정된 파일이 크롤러가 처리할 수 있는 형식인지 여부를 확인합니다. 처리할 수 있는 형식인 경우, 분류자는 해당 데이터 형식과 일치하는 StructType 객체의 형태로 스키마를 생성합니다.

자세한 내용은 분류자 정의 및 관리 단원을 참조하십시오.