분류자 정의 및 관리 - AWS Glue

분류자 정의 및 관리

분류자는 데이터 스토어의 데이터를 읽습니다. 데이터 포맷을 인식하면 스키마를 생성합니다. 분류자는 확실성 숫자를 반환하여 포맷 인식이 어땠는지 보여줍니다.

AWS Glue에서 기본 분류자 세트를 제공하지만 사용자 지정 분류자를 생성할 수도 있습니다. AWS Glue는 크롤러 정의에 지정된 순서로 사용자 정의 분류자를 먼저 호출합니다. 사용자 분류자에서 반환된 결과에 따라 AWS Glue는 기본 설정 분류자도 시작할 수 있습니다. 분류자가 진행 중에 certainty=1.0을 반환하면 정확한 스키마를 생성할 수 있다는 100% 확실성을 나타냅니다. 이후 AWS Glue가 해당 분류자의 출력을 사용합니다.

어떠한 분류자도 certainty=1.0을 반환하지 않으면, AWS Glue는 높은 확실성이 있는 분류자 출력을 사용합니다. 어떠한 분류자도 0.0을 초과한 확실성을 반환하지 않으면, AWS Glue는 UNKNOWN의 기본 분류 문자열을 반환합니다.

언제 분류자를 사용하나요?

데이터 스토어를 크롤하여 AWS Glue Data Catalog에 메타데이터 테이블을 정의할 때 분류자를 사용합니다. 분류자의 순서가 있는 세트를 통해 크롤러를 설치할 수 있습니다. 크롤러가 분류자를 시작할 때 분류자는 데이터가 인식되었는지 결정합니다. 분류자가 데이터를 인식하지 못하거나 100% 확실성이 없다면 크롤러는 목록에서 다음 분류자를 시작하여 데이터를 인식하는지 결정합니다.

AWS Glue 콘솔을 사용한 분류자 생성에 대한 자세한 내용은 AWS Glue 콘솔을 사용하여 분류자 생성을 참조하십시오.

사용자 지정 분류자

분류자의 출력은 파일 분류 혹은 포맷(예를 들어 json) 및 파일 스키마를 보여주는 문자열을 포함합니다. 사용자 지정 분류자의 경우, 분류자 유형을 기반으로 스키마를 생성하는 로직을 정의합니다. 분류자 유형은 grok 패턴, XML 태그 및 JSON에 따른 스키마 정의를 포함합니다.

분류자 정의를 변경하면 분류자를 사용하여 이전에 크롤링된 어떤 데이터도 재분류가 되지 않습니다. 크롤러는 이전에 크롤링된 데이터를 계속 추적합니다. 새로운 데이터는 업데이트된 스키마 결과를 낳을 수 있는 업데이트된 분류자로 분류됩니다. 데이터 스키마가 연관되면 크롤러를 실행할 때 분류자를 계정에 업데이트하여 스키마를 변경합니다. 부정확한 분류자를 바로 잡기 위해 데이터를 재분류하려면 업데이트된 분류자로 새로운 데이터를 생성합니다.

AWS Glue의 사용자 지정 분류자를 생성하는 방법에 대한 자세한 내용은 다양한 데이터 형식에 대한 사용자 지정 분류자 작성 섹션을 참조하십시오.

참고

데이터 포맷이 기본 설정 분류자 중 하나로 인식되면 사용자 지정 분류자를 생성할 필요가 없습니다.

기본 제공 분류자

AWS Glue는 JSON, CSV, 웹 로그 및 다수 데이터베이스 시스템을 포함한 다양한 포맷의 기본 설정 분류자를 제공합니다.

AWS Glue가 100% 확실성의 입력 데이터 포맷에 맞는 사용자 지정 분류자를 찾을 수 없다면 다음 테이블에 보여진 것처럼 기본 설정 분류자를 시작합니다. 기본 설정 분류자는 포맷이 일치한지(certainty=1.0) 일치하지 않는지(certainty=0.0) 보여주는 결과를 반환합니다. certainty=1.0이 있는 첫 번째 분류자는 Data Catalog의 메타데이터 테이블의 분류 문자열 및 스키마를 제공합니다.

분류자 유형 분류 문자열 참고
Apache Avro avro 파일 시작 부분의 스키마를 읽어 포맷을 결정합니다.
Apache ORC orc 파일 메타데이터를 읽어 포맷을 결정합니다.
Apache Parquet parquet 파일 끝 부분의 스키마를 읽어 포맷을 결정합니다.
JSON json 파일 시작 부분을 읽어 포맷을 결정합니다.
이진수 JSON bson 파일 시작 부분을 읽어 포맷을 결정합니다.
XML xml 파일 시작부를 읽어 형식을 확인합니다. AWS Glue는 문서의 XML 태그에 기반하여 테이블 스키마를 확인합니다.

문서의 행을 지정하기 위한 사용자 지정 분류자를 생성하는 방법에 대한 자세한 내용은 XML 사용자 지정 분류자 작성 단원을 참조하십시오.

Amazon Ion ion 파일 시작 부분을 읽어 포맷을 결정합니다.
통합된 Apache Log combined_apache grok 패턴을 통해 로그 포맷을 결정합니다.
Apache log apache grok 패턴을 통해 로그 포맷을 결정합니다.
Linux kernel log linux_kernel grok 패턴을 통해 로그 포맷을 결정합니다.
Microsoft log microsoft_log grok 패턴을 통해 로그 포맷을 결정합니다.
Ruby log ruby_logger 파일 시작 부분을 읽어 포맷을 결정합니다.
Squid 3.x log squid 파일 시작 부분을 읽어 포맷을 결정합니다.
Redis monitor log redismonlog 파일 시작 부분을 읽어 포맷을 결정합니다.
Redis log redislog 파일 시작 부분을 읽어 포맷을 결정합니다.
CSV csv 콤마(,) 혹은 파이프(|), 탭(\t), 세미콜론(;), Ctrl+A(\u0001)의 다음 구획 문자를 확인합니다. Ctrl-A는 Start Of Heading용 유니코드 관리 문자입니다.
Amazon Redshift redshift JDBC 연결을 사용하여 메타데이터를 가져옵니다.
MySQL mysql JDBC 연결을 사용하여 메타데이터를 가져옵니다.
PostgreSQL postgresql JDBC 연결을 사용하여 메타데이터를 가져옵니다.
Oracle 데이터베이스 oracle JDBC 연결을 사용하여 메타데이터를 가져옵니다.
Microsoft SQL Server sqlserver JDBC 연결을 사용하여 메타데이터를 가져옵니다.
Amazon DynamoDB dynamodb DynamoDB 테이블에서 데이터를 읽습니다.

다음 형식의 파일은 분류될 수 있습니다.

  • ZIP(단일 파일만 있는 아카이브에 지원됨). 다른 서비스에서는 Zip이 잘 지원되지 않습니다(아카이브 때문에).

  • bzip

  • GZIP

  • LZ4

  • Snappy(표준 및 Hadoop 네이티브 Snappy 형식 모두에서 지원됨)

기본 설정 CSV 분류자

기본 설정 CSV 분류자는 CSV 파일 내용을 파싱하여 AWS Glue 테이블 스키마를 결정합니다. 이 분류자는 다음 구분 기호를 확인합니다.

  • 쉼표(,)

  • 파이프(|)

  • 탭(\t)

  • 세미콜론(;)

  • Ctrl-A (\u0001)

    Ctrl-A는 Start Of Heading용 유니코드 관리 문자입니다.

CSV로써 분류되려면 테이블 스키마는 적어도 데이터의 두 개의 열과 두 개의 행이 있어야 합니다. CSV 분류자는 휴리스틱 숫자를 사용하여 헤더가 주어진 파일에 존재하는지 결정합니다. 분류자가 데이터의 첫 번째 행에서 헤더를 결정하지 못하면 열 헤더는 col1, col2, col3 등으로 보여집니다. 기본 설정 CSV 분류자는 다음 파일의 특성을 평가하여 헤더를 추론할지 여부를 결정합니다.

  • 잠재적 헤더의 모든 열은 STRING(문자열) 데이터 유형으로 파싱합니다.

  • 마지막 열을 제외하면 잠재적 헤더의 모든 열은 150 문자보다 적습니다. 후행 구분 기호를 허용하기 위해서는 마지막 열이 파일 전체로 비어 있을 수 있습니다.

  • 잠재적 헤더의 모든 열은 열 이름 때문에 AWS Glue regex 요구 사항과 일치해야 합니다.

  • 헤더는 데이터 행과 많이 달라야 합니다. 이를 결정하기 위해서는 하나 이상의 행이 STRING(문자열) 유형 아닌 것으로써 파싱해야 합니다. 모든 열이 문자열 유형이면 데이터 첫 번째 행은 헤더로써 사용되는 후속 행과 많이 다르지 않습니다.

참고

기본 설정 CSV 분류자는 원하는 AWS Glue 테이블을 생성하지 않으면 다음 대안 중 하나 이상을 사용할 수 있습니다.

  • Data Catalog의 열 이름을 변경하고 SchemaChangePolicy를 LOG에 설정하고 파티션 출력 구성을 InheritFromTable로 설정하여 추후에 실행할 크롤러에 대비합니다.

  • 사용자 지정 grok 분류자를 생성하여 데이터를 파싱하고 원하는 열을 지정합니다.

  • 기본 설정 CSV 분류자는 유형 추론의 좋은 선택인 직렬화 라이브러리로써 LazySimpleSerDe를 참조하는 테이블을 생성합니다. 하지만 CSV 데이터가 따옴표로 묶인 문자열을 포함하면 테이블 정의를 편집하고 SerDe 라이브러리를 OpenCSVSerDe로 변경합니다. 추론된 유형을 STRING(문자열)로 조절하고 SchemaChangePolicy를 로그에 설치하고 파티션 출력 구성을 InheritFromTable로 설치하여 추후에 실행할 크롤러에 대비합니다. SerDe 라이브러리에 대한 자세한 내용은 Amazon Athena User Guide의 SerDe Reference를 참조하세요.