View a markdown version of this page

Amazon S3의 여러 파일에 데이터 연결 - AWS Glue DataBrew개발자 안내서

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

Amazon S3의 여러 파일에 데이터 연결

DataBrew 콘솔을 사용하면 Amazon S3 버킷 및 폴더를 탐색하고 데이터 세트에 대한 파일을 선택할 수 있습니다. 하지만 데이터 세트를 하나의 파일로 제한할 필요는 없습니다.

이름이 인 폴더my-databrew-bucket가 포함된 이름이 인 S3 버킷이 있다고 가정해 보겠습니다databrew-input. 해당 폴더에 파일 형식과 파일 .json 확장명이 동일한 여러 개의 JSON 파일이 있다고 가정합니다. 콘솔에서의 소스 URL을 지정할 수 있습니다s3://my-databrew-bucket/databrew-input/. DataBrew 콘솔에서이 폴더를 선택할 수 있습니다. 데이터 세트는 해당 폴더의 모든 JSON 파일로 구성됩니다.

DataBrew는 다음 조건이 참인 경우에만 S3 폴더의 모든 파일을 처리할 수 있습니다.

  • 폴더의 모든 파일 형식은 동일합니다.

  • 폴더에 있는 모든 파일의 파일 확장명은 동일합니다.

지원되는 파일 형식 및 확장명에 대한 자세한 내용은 섹션을 참조하세요DataBrew input formats.

여러 파일을 데이터 세트로 사용할 때의 스키마

여러 파일을 DataBrew 데이터 세트로 사용하는 경우 스키마는 모든 파일에서 동일해야 합니다. 그렇지 않으면 프로젝트 Workspace는 여러 파일에서 스키마 중 하나를 자동으로 선택하고 나머지 데이터 세트 파일을 해당 스키마에 맞추려고 시도합니다. 이 동작으로 인해 프로젝트 Workspace 중에 표시되는 보기가 불규칙해지고 결과적으로 작업 출력도 불규칙해집니다.

파일에 다른 스키마가 있어야 하는 경우 여러 데이터 세트를 생성하고 별도로 프로파일링해야 합니다.

Amazon S3에 파라미터화된 경로 사용

경우에 따라 특정 명명 규칙을 따르는 파일이 포함된 데이터 세트 또는 여러 Amazon S3 폴더에 걸쳐 있을 수 있는 데이터 세트를 생성할 수 있습니다. 또는 특정 파라미터에 따라 경로가 있는 S3 위치에서 주기적으로 생성되는 동일한 구조화된 데이터에 동일한 데이터 세트를 재사용할 수 있습니다. 예를 들어 데이터 프로덕션 날짜의 라는 경로가 있습니다.

DataBrew는 파라미터화된 S3 경로로이 접근 방식을 지원합니다. 파라미터화된 경로는 정규식 또는 사용자 지정 경로 파라미터 또는 둘 다를 포함하는 Amazon S3 URL입니다.

정규식을 사용하여 S3 경로로 데이터 세트 정의

경로의 정규식은 하나 이상의 폴더에서 여러 파일을 일치시키는 동시에 해당 폴더에서 관련 없는 파일을 필터링하는 데 유용할 수 있습니다.

다음은 몇 가지 예입니다.

  • 이름이 로 시작하는 폴더의 모든 JSON 파일을 포함하는 데이터 세트를 정의합니다invoice.

  • 2020 이름에가 있는 폴더의 모든 파일을 포함하는 데이터 세트를 정의합니다.

데이터 세트 S3 경로에서 정규식을 사용하여 이러한 유형의 접근 방식을 구현할 수 있습니다. 이러한 정규식은 S3 URL의 키에 있는 모든 하위 문자열을 대체할 수 있습니다(버킷 이름은 대체하지 않음).

S3 URL의 키 예제는 다음을 참조하세요. 여기서 my-bucket는 버킷 이름이고, 미국 동부(오하이오)는AWS리전이며,는 키 이름puppy.png입니다.

https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png

파라미터화된 S3 경로에서는 두 개의 각도 대괄호(<>) 사이의 모든 문자가 정규식으로 처리됩니다. 두 가지 예는 다음과 같습니다.

  • s3://my-databrew-bucket/databrew-input/invoice<.*>/data.json는 이름이 로 시작하는의 모든 하위 폴더 data.json내에서 이름이 databrew-input인 모든 파일과 일치합니다invoice.

  • s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/는 폴더의 모든 파일과 이름2020의를 일치시킵니다.

이 예제에서는 0개 이상의 문자와 .* 일치합니다.

참고

버킷 이름 뒤에 오는 부분인 S3 경로의 키 부분에서만 정규식을 사용할 수 있습니다. 따라서 s3://my-databrew-bucket/<.*>-input/는 유효하지만 s3://my-<.*>-bucket/<.*>-input/ 유효하지 않습니다.

정규식을 테스트하여 원하는 S3 URLs만 일치하고 원하지 않는 URL은 일치하지 않는지 확인하는 것이 좋습니다.

다음은 정규식의 몇 가지 다른 예입니다.

  • <\d{2}>07 또는와 같이 정확히 두 개의 연속된 숫자로 구성된 문자열과 일치하지03만는 일치하지 않습니다1a2.

  • <[a-z]+.*>는 하나 이상의 소문자 라틴 문자로 시작하고 그 뒤에 0개 이상의 다른 문자가 있는 문자열과 일치합니다. 예제는 a3, abc/def또는 a-z이지만는 아닙니다A2.

  • <[^/]+>는 슬래시(/)를 제외한 모든 문자가 포함된 문자열과 일치합니다. S3 URL에서 슬래시는 경로의 폴더를 분리하는 데 사용됩니다.

  • <.*=.*>는 등호(=)가 포함된 문자열month=02과 일치합니다. 예: abc/day=2, 또는 =10, 그러나는 포함되지 않습니다test.

  • <\d.*\d>는 숫자로 시작하고 끝나는 문자열과 일치하며 1abc2, 01-02-03또는와 같이 숫자 사이에 다른 문자를 포함할 수 2020/Jul/21있지만는 포함할 수 없습니다123a.

사용자 지정 파라미터를 사용하여 S3 경로로 데이터 세트 정의

사용자 지정 파라미터를 사용하여 파라미터화된 데이터 세트를 정의하면 S3 위치에 대한 파라미터를 제공하려는 경우 정규식을 사용하는 것보다 이점이 있습니다.

  • 정규식의 구문을 알 필요 없이 정규식과 동일한 결과를 얻을 수 있습니다. "starts with" 및 "contains"와 같은 친숙한 용어를 사용하여 파라미터를 정의할 수 있습니다.

  • 경로의 파라미터를 사용하여 동적 데이터 세트를 정의할 때 "지난 달" 또는 "지난 24시간"과 같은 시간 범위를 정의에 포함할 수 있습니다. 이렇게 하면 데이터세트 정의가 나중에 새 수신 데이터와 함께 사용됩니다.

다음은 동적 데이터 세트를 사용할 수 있는 몇 가지 예입니다.

  • 마지막으로 업데이트된 날짜 또는 기타 의미 있는 속성으로 분할된 여러 파일을 단일 데이터 세트에 연결합니다. 그런 다음 이러한 파티션 속성을 데이터 세트의 추가 열로 캡처할 수 있습니다.

  • 데이터 세트의 파일을 특정 조건을 충족하는 S3 위치로 제한합니다. 예를 들어 S3 경로에와 같은 날짜 기반 폴더가 포함되어 있다고 가정합니다folder/2021/04/01/. 이 경우 날짜를 파라미터화하고 "2021년 3월 1일부터 2021년 4월 1일까지" 또는 "지난 주"와 같은 특정 범위로 제한할 수 있습니다.

파라미터를 사용하여 경로를 정의하려면 파라미터를 정의하고 다음 형식을 사용하여 경로에 추가합니다.

s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json

참고

S3 경로의 정규식과 마찬가지로 버킷 이름 뒤에 오는 부분인 경로의 키 부분에만 파라미터를 사용할 수 있습니다.

파라미터 정의에는 이름 및 유형이라는 두 개의 필드가 필요합니다. 유형은 문자열, 숫자 또는 날짜일 수 있습니다. DataBrew가 날짜 값을 올바르게 해석하고 비교할 수 있도록 날짜 유형의 파라미터에는 날짜 형식의 정의가 있어야 합니다. 선택적으로 파라미터에 대한 일치 조건을 정의할 수 있습니다. DataBrew 작업 또는 대화형 세션에 의해 로드될 때 파라미터의 일치하는 값을 데이터 세트에 열로 추가하도록 선택할 수도 있습니다.

예제

DataBrew 콘솔에서 파라미터를 사용하여 동적 데이터 세트를 정의하는 예를 살펴보겠습니다. 이 예제에서는 입력 데이터가 다음과 같은 위치를 사용하여 S3 버킷에 정기적으로 기록된다고 가정합니다.

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csv

  • s3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv

여기에는 미국과 같은 국가 코드와 2021-03-30과 같은 파일 이름의 날짜라는 두 가지 동적 부분이 있습니다. 여기서는 모든 파일에 동일한 정리 레시피를 적용할 수 있습니다. 매일 정리 작업을 수행하려고 한다고 가정해 보겠습니다. 다음은이 시나리오에 대해 파라미터화된 경로를 정의하는 방법입니다.

  1. 특정 파일로 이동합니다.

  2. 그런 다음 날짜와 같은 다양한 부분을 선택하고 파라미터로 바꿉니다. 이 경우 날짜를 바꿉니다.

    파라미터로 대체하기 위해 날짜 2021-03-23가 강조 표시된 S3 경로입니다.
  3. 사용자 지정 파라미터 생성 및 해당 파라미터에 대한 속성 설정의 컨텍스트 메뉴(마우스 오른쪽 버튼 클릭)를 엽니다.

    • 이름: 보고서 날짜

    • 유형: 날짜

    • 날짜 형식: yyyy-MM-dd(미리 정의된 형식에서 선택됨)

    • 조건(시간 범위): 지난 24시간

    • 열로 추가: true(확인됨)

    다른 필드는 기본값으로 유지합니다.

  4. 생성(Create)을 선택합니다.

그러면 다음 스크린샷과 같이 업데이트된 경로가 표시됩니다.

버킷에 있는 일치하는 파일 6개를 보여주는 파라미터 자리 표시자가 있는 S3 경로입니다.

이제 국가 코드에 대해 동일한 작업을 수행하고 다음과 같이 파라미터를 지정할 수 있습니다.

  • 이름: 국가 코드

  • 유형: 문자열

  • 열로 추가: true(확인됨)

모든 값이 관련된 경우 조건을 지정할 필요가 없습니다. 예를 들어 new-cases 폴더에는 국가 코드가 있는 하위 폴더만 있으므로 조건이 필요하지 않습니다. 제외할 다른 폴더가 있는 경우 다음 조건을 사용할 수 있습니다.

정규식 패턴 A~Z 뒤에 괄호로 묶인 2가 포함된 문자열 값 필드입니다.

이 접근 방식은 새 사례의 하위 폴더가 두 개의 라틴어 대문자를 포함하도록 제한합니다.

이 파라미터화 후에는 데이터 세트에 일치하는 파일만 있으며 데이터 세트 생성을 선택할 수 있습니다.

참고

조건에서 상대 시간 범위를 사용하면 데이터 세트가 로드될 때 시간 범위가 평가됩니다. 이는 "지난 24시간"과 같은 사전 정의된 시간 범위든 "5일 전"과 같은 사용자 지정 시간 범위든 마찬가지입니다. 이 평가 접근 방식은 대화형 세션 초기화 중에 또는 작업 시작 중에 데이터 세트가 로드되는지 여부를 적용합니다.

데이터 세트 생성을 선택하면 동적 데이터 세트를 사용할 준비가 된 것입니다. 예를 들어 먼저 프로젝트를 생성하고 대화형 DataBrew 세션을 사용하여 정리 레시피를 정의할 수 있습니다. 그런 다음 매일 실행되도록 예약된 작업을 생성할 수 있습니다. 이 작업은 작업이 시작될 때 파라미터 조건을 충족하는 데이터 세트 파일에 정리 레시피를 적용할 수 있습니다.

동적 데이터 세트에 지원되는 조건

조건을 사용하여 파라미터 또는 마지막으로 수정된 날짜 속성을 사용하여 일치하는 S3 파일을 필터링할 수 있습니다.

아래에서 각 파라미터 유형에 대해 지원되는 조건 목록을 찾을 수 있습니다.

문자열 파라미터와 함께 사용되는 조건
DataBrew SDK의 이름 SDK 동의어 DataBrew 콘솔의 이름 설명

인가

당량, ==

정확히 입니다.

파라미터의 값은 조건에 제공된 값과 동일합니다.

는가 아닙니다.

not eq, !=

Is not

파라미터의 값은 조건에 제공된 값과 동일하지 않습니다.

contains

포함

파라미터의 문자열 값에는 조건에 제공된 값이 포함됩니다.

에 포함되지 않음

를 포함하지 않음

파라미터의 문자열 값에 조건에 제공된 값이 포함되지 않습니다.

로 시작

다음으로 시작

파라미터의 문자열 값은 조건에 제공된 값으로 시작합니다.

를 사용하여 시작하지 않음

로 시작하지 않음

파라미터의 문자열 값은 조건에 제공된 값으로 시작되지 않습니다.

ends_with

다음으로 끝남

파라미터의 문자열 값은 조건에 제공된 값으로 끝납니다.

not ends_with

로 끝나지 않음

파라미터의 문자열 값은 조건에 제공된 값으로 끝나지 않습니다.

matches

일치 항목

파라미터의 값은 조건에 제공된 정규식과 일치합니다.

일치하지 않음

일치하지 않음

파라미터 값이 조건에 제공된 정규식과 일치하지 않습니다.

참고

문자열 파라미터의 모든 조건은 대/소문자 구분 비교를 사용합니다. S3 경로에 사용된 사례에 대해 잘 모르는 경우 로 시작하는 정규식 값과 함께 "일치" 조건을 사용할 수 있습니다(?i). 이렇게 하면 대/소문자를 구분하지 않는 비교가 수행됩니다.

예를 들어 문자열 파라미터가 로 시작되길 원abc하지만 Abc 또는 도 가능하다ABC고 가정해 보겠습니다. 이 경우에서 "일치" 조건을 조건 값으로 사용할 수 (?i)^abc 있습니다.

숫자 파라미터와 함께 사용되는 조건
DataBrew SDK의 이름 SDK 동의어 DataBrew 콘솔의 이름 설명

인가

당량, ==

정확히 입니다.

파라미터의 값은 조건에 제공된 값과 동일합니다.

는가 아닙니다.

not eq, !=

Is not

파라미터의 값은 조건에 제공된 값과 동일하지 않습니다.

보다_작음

lt, <

보다 작음

파라미터의 숫자 값이 조건에 제공된 값보다 작습니다.

less_than_equal

lte, <=

작거나 같음

파라미터의 숫자 값이 조건에 제공된 값보다 작거나 같습니다.

보다 큼

gt, >

보다 큼

파라미터의 숫자 값이 조건에 제공된 값보다 큽니다.

더 큼_작음_같음

gte, >=

크거나 같음

파라미터의 숫자 값이 조건에 제공된 값보다 크거나 같습니다.

날짜 파라미터와 함께 사용되는 조건
DataBrew SDK의 이름 DataBrew 콘솔의 이름 조건 값 형식(SDK) 설명

after

시작

2021-03-30T01:00:00Z 또는와 같은 ISO 8601 날짜 형식 2021-03-30T01:00-07:00

날짜 파라미터의 값은 조건에 제공된 날짜 이후입니다.

before

종료

2021-03-30T01:00:00Z 또는와 같은 ISO 8601 날짜 형식 2021-03-30T01:00-07:00

날짜 파라미터의 값은 조건에 제공된 날짜보다 이전입니다.

상대_후

시작(상대적)

-48h 또는와 같은 시간 단위의 양수 또는 음수입니다+7d.

날짜 파라미터의 값은 조건에 제공된 상대 날짜 이후입니다.

대화형 세션이 초기화되거나 연결된 작업이 시작될 때 데이터 세트가 로드될 때 상대 날짜가 평가됩니다. 이 순간이 예제에서 "지금"이라고 합니다.

relative_before

종료(상대적)

-48h 또는와 같은 시간 단위의 양수 또는 음수입니다+7d.

날짜 파라미터의 값은 조건에 제공된 상대 날짜보다 이전입니다.

대화형 세션이 초기화되거나 연결된 작업이 시작될 때 데이터 세트가 로드될 때 상대 날짜가 평가됩니다. 이 순간이 예제에서 "지금"이라고 합니다.

SDK를 사용하는 경우 상대 날짜를 형식으로 입력합니다±{number_of_time_units}{time_unit}. 다음 시간 단위를 사용할 수 있습니다.

  • -1h(1시간 전)

  • +2d(지금부터 2일 후)

  • -120m(120분 전)

  • 5,000초(지금부터 5,000초)

  • -3w(3주 전)

  • +4M(지금부터 4개월 후)

  • -1년(1년 전)

대화형 세션이 초기화되거나 연결된 작업이 시작될 때 데이터 세트가 로드될 때 상대 날짜가 평가됩니다. 이는 앞의 예제에서 "지금"이라고 하는 순간입니다.

동적 데이터 세트에 대한 설정 구성

파라미터화된 S3 경로를 제공하는 것 외에도 여러 파일이 있는 데이터 세트에 대한 다른 설정을 구성할 수 있습니다. 이러한 설정은 마지막 수정 날짜별로 S3 파일을 필터링하고 파일 수를 제한합니다.

경로에서 날짜 파라미터를 설정하는 것과 마찬가지로 일치하는 파일이 업데이트된 시간 범위를 정의하고 해당 파일만 데이터 세트에 포함할 수 있습니다. "2021년 3월 30일"과 같은 절대 날짜 또는 "지난 24시간"과 같은 상대 범위를 사용하여 이러한 범위를 정의할 수 있습니다.

지난 24시간 드롭다운 메뉴에서 마지막으로 업데이트된 날짜 범위 확인란을 선택합니다.

일치하는 파일 수를 제한하려면 0보다 큰 파일 수와 일치하는 최신 파일을 원하는지 아니면 가장 오래된 파일을 원하는지 선택합니다.

최신 드롭다운에 포함할 파일 수 지정 및 파일 10개에 대해 선택된 확인란입니다.