AWS Lake Formation FindMatches로 레코드 매칭 - AWS Glue

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS Lake Formation FindMatches로 레코드 매칭

참고

현재 레코드 일치는 중동(UAE), 유럽(스페인)(eu-south-2) 및 유럽(취리히)(eu-central-2) 리전의 AWS Glue 콘솔에서 사용할 수 없습니다.

AWS Lake Formation에는 기계 학습 기능이 있어서 사용자 지정 변환을 만들어 데이터를 정리할 수 있습니다. 여기에는 FindMatches로 명명된 사용 가능 변환이 하나 있습니다. FindMatches 변환으로는 레코드에 공통된 고유 식별자가 없고 정확히 일치되는 필드 또한 없을 경우에도 데이터 세트에서 중복 레코드나 일치 레코드를 식별할 수 있습니다. 여기에서는 특정 코드 작성이나 기계 학습 진행 방법 숙지가 불필요합니다. FindMatches는 다음과 같은 다양한 문제에서 도움이 될 수 있습니다.

  • 고객 매칭(Matching customers): 데이터베이스상에서 여러 고객 필드가 서로 정확히 일치하지 않을 때에도(예: 이름의 철자나 주소가 다른 경우, 데이터가 누락되거나 부정확한 경우 등) 고객의 레코드를 다양한 고객 데이터베이스에 연결할 수 있습니다.

  • 제품 매칭(Matching products): 항목의 구조가 서로 다를 때에도 사용자 카탈로그의 제품과 다른 출처를 매칭할 수 있습니다(예: 경쟁사의 카탈로그와 매칭).

  • 부정 행위 탐지 개선(Improving fraud detection): 중복된 고객 계정을 식별하고 새로 생성된 계정이 이전의 부정 행위 사용자와 일치하거나 일치할 소지가 있을 때 이를 확인할 수 있습니다.

  • 기타 매칭 문제(Other matching problems): 주소나 영화, 파트 목록 등을 매칭할 수 있습니다. 일반적으로 사람이 데이터베이스의 행을 확인해서 일치 여부를 확인할 수 있다면 FindMatches 변환으로 업무에 도움이 될 만한 상황이 매우 많습니다.

작업을 생성할 때 이러한 변환을 만들 수 있습니다. 생성하는 변환은 레이블을 지정한 소스 데이터 세트의 예제 데이터 및 소스 데이터 스토어 스키마를 기반으로 합니다(이 프로세스를 변환 '교육'이라고 함). 레이블을 지정하는 레코드가 소스 데이터 세트에 있어야 합니다. 이러한 프로세스에서는 사용자가 레이블 지정하는 파일을 생성한 다음 변환이 어느 정도 학습이 가능한 사항을 다시 업로드합니다. 변환을 학습시킨 다음 Spark 기반 AWS Glue 작업(PySpark 또는 Scala Spark)에서 호출하고 원본 데이터 스토어와 함께 다른 스크립트에 사용할 수 있습니다.

생성된 변환은 AWS Glue에 저장됩니다. AWS Glue 콘솔에서 생성된 변환을 관리할 수 있습니다. 데이터 통합 및 ETL, 데이터 분류 도구 > 레코드 일치 아래의 탐색 창에서 기계 학습 변환을 편집하고 계속 가르칠 수 있습니다. 콘솔에서 변환을 관리하는 방법에 대한 자세한 내용은 AWS Glue 콘솔에서 기계 학습 변환 작업 단원을 참조하십시오.

참고

AWS Glue 버전 2.0 FindMatches 작업은 변환이 데이터를 처리하는 동안 Amazon S3 버킷 aws-glue-temp-<accountID>-<region>을 사용하여 임시 파일을 저장합니다. 실행이 완료된 후 수동으로 또는 Amazon S3 수명 주기 규칙을 설정하여 이 데이터를 삭제할 수 있습니다.

기계 학습 변환의 유형

기계 학습 변환을 만들어 데이터를 정리할 수 있습니다. 이런 변환을 ETL 스크립트에서 호출할 수 있습니다. 데이터가 DynamicFrame이라는 데이터 구조 내의 변환에서 변환으로 전달됩니다. 이는 Apache Spark SQL DataFrame을 확장한 것입니다. DynamicFrame은 데이터를 포함하고 데이터 스키마를 참조하여 데이터를 진행합니다.

다음과 같은 유형의 기계 학습 변환을 사용할 수 있습니다.

일치 항목 찾기

원본 데이터에서 중복 레코드를 찾습니다. 예제 데이터 세트에 일치하는 행을 나타내는 레이블을 지정하여 이 기계 학습 변환을 학습시킵니다. 레이블 지정된 예제 데이터로 학습을 많이 시킬수록 기계 학습 변환이 어떤 행을 매칭해야 하는지 배우게 됩니다. 변환의 구성 방식에 따라 다음 중 하나가 출력됩니다.

  • 일치하는 레코드 세트를 나타내는 값이 채워진 match_id 열이 추가된 입력 테이블 사본 match_id 열은 임의 식별자입니다. match_id가 동일한 레코드는 서로 일치한다고 식별되었습니다. match_id가 서로 다른 레코드는 일치하지 않습니다.

  • 중복 행이 제거된 입력 테이블 사본 중복 항목이 여러 개 발견되면 기본 키가 가장 낮은 레코드를 유지합니다.

증분 일치 항목 찾기

기존 프레임과 증분 프레임에서 일치 항목을 찾고 일치 그룹당 고유 ID를 포함하는 열을 출력으로 반환하도록 일치 항목 찾기 변환을 구성할 수도 있습니다.

자세한 내용은 증분 일치 항목 찾기 섹션을 참조하세요.

FindMatches 변환 사용

FindMatches 변환을 사용하여 원본 데이터에서 중복 레코드를 찾을 수 있습니다. 변환의 학습을 돕기 위한 레이블 지정 파일이 생성 또는 제공됩니다.

참고

현재 사용자 지정 암호화 키를 사용하는 FindMatches 변환은 다음 리전에서 지원되지 않습니다.

  • 아시아 태평양(오사카) - ap-northeast-3

FindMatches 변환을 시작하려면 아래 단계를 수행합니다. 자세한 고급 예제는 AWS 빅 데이터 블로그 Harmonize data using AWS Glue and AWS Lake Formation FindMatches ML to build a customer 360 view를 참조하세요.

일치 항목 찾기 변환을 사용하여 시작하기

FindMatches 변환을 시작하려면 다음 단계를 따르십시오.

  1. AWS Glue Data Catalog에서 정리할 원본 데이터의 테이블을 만듭니다. 크롤러 생성 방법에 대한 자세한 내용은 AWS Glue 콘솔에서 크롤러 작업.을 참조하세요.

    원본 데이터가 CSV(쉼표로 구분된 값) 파일 등 텍스트 기반의 파일이라면 다음을 고려하십시오.

    • 입력 레코드 CSV 파일과 레이블 지정 파일을 별도의 파일에 보관합니다. 그렇지 않으면 AWS Glue 크롤러가 이를 동일한 테이블의 각 부분으로 간주하고 Data Catalog에 테이블을 잘못 생성할 수 있습니다.

    • CSV 파일에 ASCII 문자만 들어 있는 경우를 제외하고, CSV 파일에는 BOM(바이트 순서 표시) 없는 UTF-8 인코딩을 사용해야 합니다. Microsoft Excel은 흔히 UTF-8 CSV 파일의 시작 부분에 BOM을 추가합니다. 이를 제거하려면 텍스트 편집기에서 CSV 파일을 열고 파일을 UTF-8 without BOM(BOM 없는 UTF-8)으로 다시 저장하십시오.

  2. AWS Glue 콘솔에서 작업을 만들고 Find matches(일치 항목 찾기) 변환 유형을 선택합니다.

    중요

    작업을 위해 선택하는 데이터 원본 테이블의 열 수는 100개를 넘을 수 없습니다.

  3. [레이블 지정 파일 생성(Generate labeling file)]을 선택하여 AWS Glue에 레이블 지정 파일을 생성하도록 지시합니다. AWS Glue가 각 labeling_set_id에 비슷한 레코드를 그룹화하기 위한 첫 번째 전달을 맡아 그러한 그룹화를 검토할 수 있게 해줍니다. 사용자의 레이블이 label 열과 일치합니다.

    • 일치하는 행을 나타내는 레코드 예시인 레이블 지정 파일이 이미 있는 경우, 해당 파일을 Amazon Simple Storage Service(Amazon S3)에 업로드합니다. 레이블 지정 파일의 형식에 대한 자세한 내용은 레이블 지정 파일 형식 단원을 참조하십시오. 4단계로 이동합니다.

  4. 레이블 지정 파일을 다운로드하고 레이블링 단원에 설명된 대로 해당 파일에 레이블을 지정합니다.

  5. 수정된 레이블 지정 파일을 업로드합니다. AWS Glue가 일치 항목 찾는 방법을 변환에 학습시키기 위한 작업을 실행합니다.

    Machine learning transforms(기계 학습 변환) 목록 페이지에서 기록 탭을 선택합니다. AWS Glue가 다음 작업을 수행하면 이 페이지에 표시됩니다.

    • 레이블 가져오기

    • 레이블 내보내기

    • 레이블 생성

    • 품질 예측

  6. 더 나은 변환을 만들기 위해 레이블 지정 파일을 반복해서 다운로드하고, 레이블 지정하고, 업로드할 수 있습니다. 처음 실행할 때는 불일치 레코드가 훨씬 더 많을 수 있습니다. 그러나 레이블 지정 파일을 확인하면서 계속 학습시키면 AWS Glue가 학습을 합니다.

  7. 일치 항목 찾기의 성능과 결과를 측정하여 변환을 평가하고 조정하십시오. 자세한 내용은 AWS Glue에서 기계 학습 변환 튜닝 단원을 참조하십시오.

레이블링

FindMatches가 레이블 지정 파일을 생성할 때 사용자의 소스 테이블에서 레코드가 선택됩니다. 이전의 학습을 토대로 FindMatches는 학습해야 할 가장 중요한 레코드를 파악합니다.

레이블 지정이란 레이블 지정 파일을 편집(Microsoft Excel 같은 스프레드시트 사용을 권장)하고 일치 및 불일치 레코드를 식별하는 label 열에 식별자나 레이블을 추가하는 것을 뜻합니다. 소스 데이터의 일치 항목을 명확하고 일관성 있게 정의해야 합니다. FindMatches는 사용자가 일치(또는 불일치) 항목으로 지정한 레코드에서 학습하고, 사용자의 결정을 토대로 중복 레코드 찾는 방법을 배웁니다.

FindMatches에서 레이블 지정 파일이 생성될 때 약 100개의 레코드가 생성됩니다. 이러한 100개의 레코드는 보통 10개의 레이블 지정 세트로 나뉘며, 각각의 레이블 지정 세트는 FindMatches에서 생성된 고유한 labeling_set_id으로 식별됩니다. 각 레이블 지정 세트는 다른 레이블 지정 세트와 독립적인 별도의 레이블 지정 작업으로 간주되어야 합니다. 각각의 레이블 지정 세트 내에서 일치하는 레코드와 일치하지 않는 레코드를 식별하는 작업을 합니다.

스프레드시트에서의 레이블 지정 파일 편집 관련 팁입니다.

스프레드 시트 애플리케이션에서 레이블 지정 파일을 편집할 때는 다음을 고려하십시오.

  • 열 필드가 전부 확장된 상태에서는 파일이 열리지 않을 수 있습니다. 원하는 셀의 내용을 보기 위해 labeling_set_idlabel 열을 확장해야 할 수 있습니다.

  • long 데이터 유형 등 기본 키 열이 숫자인 경우, 스프레드시트에서 이를 숫자로 해석하고 값을 변경할 수 있습니다. 이 키 값은 텍스트로 취급해야 합니다. 이 문제를 해결하려면 기본 키 열의 모든 셀을 텍스트 데이터로 서식 지정하십시오.

레이블 지정 파일 형식

FindMatches 변환을 가르치기 위해 AWS Glue에서 생성된 레이블 지정 파일은 다음 형식을 사용합니다. AWS Glue에 대한 자체 파일을 생성하는 경우에는 다음 형식도 따라야 합니다.

  • CSV(쉼표로 구분된 값) 파일입니다.

  • UTF-8로 인코딩해야 합니다 . Microsoft Windows에서 이 파일을 편집하면 cp1252로 인코딩될 수 있습니다.

  • Amazon S3 위치에 있어야 AWS Glue로 전달할 수 있습니다.

  • 각각의 레이블 지정 태스크마다 적당한 수의 행을 사용하세요. 태스크당 10~20행이 좋지만, 태스크당 2~30행도 허용 가능합니다. 행이 50개 이상인 작업은 권장되지 않으며 결과가 좋지 않거나 시스템 오류가 발생할 수 있습니다.

  • “일치”또는 “불일치”로 레이블이 지정된 레코드 쌍으로 구성되고 이미 레이블이 지정된 데이터인 경우에는 괜찮습니다. 이렇게 레이블이 지정된 쌍은 크기가 2인 레이블 지정 세트로 표현될 수 있습니다. 이때 일치하는 경우에는 두 레코드를 모두 문자 “A”로 레이블 지정하고 일치하지 않는 경우에는 하나는 “A”로, 다른 하나는 “B”로 레이블 지정합니다.

    참고

    레이블 지정 파일에는 추가 열이 있기 때문에 원본 데이터가 들어 있는 파일과는 스키마가 다릅니다. AWS Glue 크롤러가 Data Catalog에서 테이블을 생성할 때 레이블 지정 파일을 고려하는 일이 없도록 이 파일을 변환 입력 CSV 파일과 다른 폴더에 저장합니다. 그렇지 않으면 AWS Glue 크롤러가 만든 테이블에 데이터가 올바르게 표현되지 않을 수 있습니다.

  • 처음 두 열(labeling_set_id, label)은 AWS Glue의 필수 열입니다. 나머지 열은 처리할 데이터의 스키마와 일치해야 합니다.

  • labeling_set_id에 대해 동일한 레이블을 사용하여 일치하는 레코드를 모두 식별합니다. 레이블이란 label 열에 배치된 고유한 문자열입니다. A, B, C 같이 단순한 문자로 된 레이블을 사용하는 것이 좋습니다. 레이블은 대소문자를 구분하며 label 열에 입력됩니다.

  • 동일한 labeling_set_id과 동일한 레이블을 포함하는 행은 일치 항목으로 레이블이 지정되는 것으로 간주됩니다.

  • 동일한 labeling_set_id과 다른 레이블을 포함하는 행은 일치 항목이 아닌 것으로 레이블이 지정됩니다.

  • 다른 labeling_set_id를 포함하는 행은 일치하거나 일치하지 않은 정보를 전달하지 않는 것으로 간주됩니다.

    다음은 데이터 레이블 지정의 예입니다.

    labeling_set_id 레이블 first_name last_name 생일
    ABC123 A Doe 04/01/1980
    ABC123 B Jane Smith 04/03/1980
    ABC123 A Johnny Doe 04/01/1980
    ABC123 A Jon Doe 04/01/1980
    DEF345 A Richard Jones 12/11/1992
    DEF345 A Rich Jones 11/12/1992
    DEF345 B Sarah Jones 12/11/1992
    DEF345 C Richie Jones Jr. 05/06/2017
    DEF345 B Sarah Jones-Walker 12/11/1992
    GHI678 A Robert Miller 1/3/1999
    GHI678 A Bob Miller 1/3/1999
    XYZABC A William Robinson 2/5/2001
    XYZABC B Andrew Robinson 2/5/1971
  • 위의 예에서는 John/Johnny/Jon Doe를 일치 항목으로 식별하고 이러한 레코드들이 Jane Smith와 일치하지 않는다고 시스템을 학습시킵니다. 이와 별도로 Richard와 Rich Jones가 같은 사람이지만 이들 레코드가 Sarah Jones/Jones-Walker와 Richie Jones Jr와 일치하지 않는다고 시스템을 학습시킵니다.

  • 보시다시피 레이블의 범위는 labeling_set_id로 제한됩니다 . 따라서 레이블은 labeling_set_id 경계를 벗어나지 않습니다. 예를 들어, labeling_set_id 1의 레이블 "A"는 labeling_set_id 2의 레이블 "A"와 아무런 관계가 없습니다.

  • 레코드가 레이블 지정 세트 내에서 일치 항목이 없는 경우, 고유한 레이블을 지정합니다. 예를 들어, Jane Smith는 레이블 지정 세트 ABC123의 레코드와 일치하지 않으므로 B라는 레이블이 있는 레이블 지정 세트의 유일한 레코드입니다.

  • 레이블 지정 세트 “GHI678"은 레이블 지정 세트가 일치한다는 것을 보여주기 위해 동일한 레이블이 지정된 두 개의 레코드로 구성 될 수 있음을 보여줍니다. 마찬가지로 “XYZABC”는 일치하지 않음을 나타내기 위해 서로 다른 레이블이 지정된 두 개의 레코드를 보여줍니다.

  • 때로 레이블 지정 세트에 일치하는 항목이 없거나(예: 레이블 지정 세트의 모든 레코드에 다른 레이블을 지정하는 경우), 레이블 지정 세트가 모두 “동일"할 수 있다는(모두 동일한 레이블을 지정한 경우) 점에 유의하십시오. 레이블 지정 세트가 기준에 따라 “동일”하지 않은 레코드의 예들을 총체적으로 포함하는 경우에는 괜찮습니다.

중요

AWS Glue에 전달하는 IAM 역할이 레이블 지정 파일이 들어 있는 Amazon S3 버킷에 액세스할 수 있는지 확인합니다. 명명 규칙에 의해 AWS Glue 정책이 Amazon S3 버킷이나 폴더 등 이름에 aws-glue- 접두사가 붙은 곳에 권한을 부여합니다. 레이블 지정 파일이 다른 위치에 있는 경우, IAM 역할에 해당 위치에 대한 권한을 추가합니다.