JDBC 테이블을 병렬로 읽기 - AWS Glue

JDBC 테이블을 병렬로 읽기

JDBC 테이블의 속성을 AWS Glue에서 분할된 데이터를 병렬로 읽도록 설정할 수 있습니다. 특정 속성을 설정할 때 AWS Glue에게 데이터의 논리적 파티션에 대해 병렬 SQL 쿼리를 실행하도록 지시합니다. 해시 필드 또는 해시 표현식을 설정하여 파티셔닝을 제어할 수 있습니다. 데이터에 액세스할 때 사용되는 병렬 읽기의 수도 제어할 수 있습니다.

JDBC 테이블에서 병렬로 읽는 것은 성능을 향상시킬 수 있는 최적화 기법입니다. 이 기법이 적절한 시기를 식별하는 프로세스에 대한 자세한 내용은 AWS 권장 가이드의 Apache Spark용 AWS Glue 작업 성능 조정 모범 사례 가이드에 있는 데이터 스캔량 감소를 참조하세요.

병렬 읽기를 활성화하려면 테이블 구조의 파라미터 필드에서 키 값 페어를 설정합니다. JSON 표기법을 사용하여 테이블 파라미터 필드 값을 설정합니다. 테이블 속성을 편집하는 방법에 대한 더 자세한 정보는 테이블 세부 정보 보기 및 편집를 참조하십시오. ETL(추출, 변환 및 로드) 방법 create_dynamic_frame_from_optionscreate_dynamic_frame_from_catalog을 호출할 때도 병렬 읽기를 활성화할 수 있습니다 이러한 방법에서 옵션을 지정하는 방법은 from_optionsfrom_catalog 단원을 참조하십시오.

이 방법을 JDBC 테이블, 즉 베이스 데이터가 JDBC 데이터 스토어인 대부분의 테이블에 사용할 수 있습니다. Amazon Redshift 및 Amazon S3 테이블을 읽을 때 이러한 속성은 무시됩니다.

hashfield

hashfield을 사용할 JDBC 테이블의 열 이름으로 설정하여 데이터를 파티션으로 분할합니다. 파티션 사이로 데이터를 분배할 값이 이 열에 고르게 분포하는 것이 가장 좋습니다. 이 열은 데이터 형식이 될 수 있습니다. AWS Glue는 이 열로 분할된 데이터를 읽기 위해 병렬로 실행되는 비-중첩 쿼리를 생성합니다. 예를 들어, 데이터가 월별로 고르게 분포할 경우 month 열을 사용하여 각 월의 데이터를 병렬로 읽을 수 있습니다.

'hashfield': 'month'

AWS Glue은 쿼리를 생성하여 필드 값을 파티션 번호로 해싱하고 전체 파티션의 질의를 병렬로 실행합니다. 사용자의 쿼리를 사용하여 테이블 읽기를 분할하려면 hashfield 대신 hashexpression를 제공합니다.

hashexpression

hashexpression을 자연수를 반환하는 SQL 표현식(JDBC 데이터베이스 엔진 문법 준수)으로 설정합니다. 간단한 표현식은 테이블의 숫자 열 이름입니다. AWS Glue는 WHERE 절의 hashexpression를 사용하여 JDBC 데이터를 병렬로 읽어 데이터를 분할할 SQL 쿼리를 생성합니다.

예를 들어, 숫자 열 customerID를 사용하여 고객 번호로 분할된 데이터를 읽습니다.

'hashexpression': 'customerID'

AWS Glue이 파티셔닝을 제어하게 하려면 hashexpression 대신 hashfield를 제공합니다.

hashpartitions

hashpartitions을 JDBC 테이블 병렬 읽기 번호로 설정합니다. 이 속성을 설정하지 않을 경우 기본값은 7입니다.

예를 들어, 병렬 읽기 번호를 5로 설정하면 AWS Glue는 쿼리가 5개(또는 이하)인 데이터를 읽습니다.

'hashpartitions': '5'