GlueContext 클래스 - AWS Glue

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

GlueContext 클래스

Apache Spark SparkContext 객체를 포함하여 Apache Spark 플랫폼과 상호작용하기 위한 원리를 제공합니다.

__init__

__init__(sparkContext)
  • sparkContext - 사용할 아파치 스파크 내용입니다.

생성 중

getSource

getSource(connection_type, transformation_ctx = "", **options)

외부 소스에서 DataSource를 읽을 때 사용되는 DynamicFrames 객체를 생성합니다.

  • connection_type - Amazon Simple Storage Service(Amazon S3), Amazon Redshift 및 JDBC와 같이 사용할 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserver, oracledynamodb가 있습니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • options - 선택적 이름-값 페어의 모음입니다. 자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

다음은 getSource를 사용한 예입니다.

>>> data_source = context.getSource("file", paths=["/in/path"]) >>> data_source.setFormat("json") >>> myFrame = data_source.getFrame()

create_dynamic_frame_from_rdd

create_dynamic_frame_from_rdd(data, name, schema=None, sample_ratio=None, transformation_ctx="")

Apache Spark Resilient Distributed Dataset(RDD)로부터 생성된 DynamicFrame을 반환합니다.

  • data - 사용할 데이터 원본입니다.

  • name - 사용할 데이터 이름입니다.

  • schema - 사용할 스키마입니다(선택 사항).

  • sample_ratio - 사용할 예제 비율입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

create_dynamic_frame_from_catalog

create_dynamic_frame_from_catalog(database, table_name, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, catalog_id = None)

데이터 카탈로그 데이터베이스 및 테이블 이름을 사용하여 생성된 DynamicFrame을 반환합니다. 이 메서드를 사용하는 경우 지정된 AWS Glue 데이터 카탈로그 테이블의 테이블 속성을 통해 format_options를 제공하고, additional_options 인수를 통해 기타 옵션을 제공합니다.

  • Database - 읽어야 할 데이터베이스입니다.

  • table_name - 읽어올 테이블의 이름입니다.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • push_down_predicate - 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 자세한 내용은 푸시다운 조건자를 사용하여 예비 필터링 섹션을 참조하세요.

  • additional_options - 선택적 이름-값 페어의 모음입니다. 가능한 옵션에는 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에 나열된 옵션이 포함됩니다(endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classificationdelimiter 제외). 지원되는 또 다른 옵션은 catalogPartitionPredicate입니다.

    catalogPartitionPredicate - 카탈로그 표현식을 전달하여 인덱스 열을 기준으로 필터링할 수 있습니다. 이렇게 하면 필터링이 서버 측으로 푸시됩니다. 자세한 내용은 AWS Glue 파티션 인덱스를 참조하세요. push_down_predicatecatalogPartitionPredicate는 다른 구문을 사용합니다. 전자는 Spark SQL 표준 구문을 사용하고 후자는 JSQL 구문 분석기를 사용합니다.

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(계정 ID)입니다. None인 경우 호출자의 기본 계정 ID가 사용됩니다.

create_dynamic_frame_from_options

create_dynamic_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

지정된 연결 및 포맷으로 생성된 DynamicFrame을 반환합니다.

  • connection_type - Amazon S3, Amazon Redshift 및 JDBC 등의 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserver, oracledynamodb가 있습니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션(선택 사항). s3connection_type인 경우, Amazon S3 경로 목록이 정의됩니다.

    connection_options = {"paths": ["s3://aws-glue-target/temp"]}

    JDBC 연결의 경우, 몇 까지 속성이 정의되어야 합니다. 단, 데이터베이스 이름이 URL의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

    주의

    스크립트에 암호를 저장하는 것은 권장되지 않습니다. AWS Secrets Manager 또는 AWS Glue 데이터 카탈로그에서 데이터를 검색할 때 boto3 사용을 고려합니다.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 속성은 JDBC 테이블의 이름입니다. 데이터베이스 내의 스키마를 지원하는 JDBC 데이터 스토어의 경우 schema.table-name에 대해 지정합니다. 스키마가 제공되지 않으면 기본 "퍼블릭" 스키마가 사용됩니다.

    자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • format - 포맷 사양입니다(선택 사항). 여러 포맷을 지원하는 Amazon S3 또는 AWS Glue 연결에 사용됩니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • format_options - 지정된 포맷에 대한 포맷 옵션입니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • push_down_predicate - 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 자세한 내용은 푸시다운 조건자를 사용하여 사전 필터링을 참조하세요.

create_sample_dynamic_frame_from_catalog

create_sample_dynamic_frame_from_catalog(database, table_name, num, redshift_tmp_dir, transformation_ctx = "", push_down_predicate= "", additional_options = {}, sample_options = {}, catalog_id = None)

데이터 카탈로그 데이터베이스와 테이블 이름을 사용하여 생성된 샘플 DynamicFrame을 반환합니다. DynamicFrame에는 데이터 소스의 첫 번째 num 레코드만 포함됩니다.

  • database - 읽어야 할 데이터베이스입니다.

  • table_name - 읽어올 테이블의 이름입니다.

  • num - 반환된 샘플 동적 프레임의 최대 레코드 수입니다.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • push_down_predicate - 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 자세한 내용은 푸시다운 조건자를 사용하여 예비 필터링 섹션을 참조하세요.

  • additional_options - 선택적 이름-값 페어의 모음입니다. 가능한 옵션에는 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에 나열된 옵션이 포함됩니다(endpointUrl, streamName, bootstrap.servers, security.protocol, topicName, classificationdelimiter 제외).

  • sample_options - 샘플링 동작을 제어하는 파라미터(선택 사항)입니다. Amazon S3 소스에 현재 사용 가능한 파라미터:

    • maxSamplePartitions - 샘플링에서 읽을 최대 파티션 수입니다. 기본값은 10입니다.

    • maxSampleFilesPerPartition - 샘플링이 한 파티션에서 읽을 최대 파일 수입니다. 기본값은 10입니다.

      이러한 파라미터는 파일 나열에 소요되는 시간을 줄이는 데 도움이 됩니다. 예를 들어 데이터 세트에 1,000개의 파티션이 있고 각 파티션에 10개의 파일이 있다고 가정합니다. maxSamplePartitions = 10 및 maxSampleFilesPerPartition = 10으로 설정하면 10,000개의 파일을 모두 나열하는 대신 샘플링은 각각에 처음 10개의 파일이 있는 처음 10개의 파티션만 나열하고 읽습니다(10*10 = 총 100개의 파일).

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(데이터 카탈로그의 계정 ID)입니다. 기본적으로 None으로 설정됩니다. None인 경우 서비스에 있는 호출 계정의 카탈로그 ID가 기본 설정됩니다.

create_sample_dynamic_frame_from_options

create_sample_dynamic_frame_from_options(connection_type, connection_options={}, num, sample_options={}, format=None, format_options={}, transformation_ctx = "")

지정된 연결과 형식으로 생성된 샘플 DynamicFrame을 반환합니다. DynamicFrame에는 데이터 소스의 첫 번째 num 레코드만 포함됩니다.

  • connection_type - Amazon S3, Amazon Redshift 및 JDBC 등의 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserver, oracledynamodb가 있습니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션(선택 사항). 자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • num - 반환된 샘플 동적 프레임의 최대 레코드 수입니다.

  • sample_options - 샘플링 동작을 제어하는 파라미터(선택 사항)입니다. Amazon S3 소스에 현재 사용 가능한 파라미터:

    • maxSamplePartitions - 샘플링에서 읽을 최대 파티션 수입니다. 기본값은 10입니다.

    • maxSampleFilesPerPartition - 샘플링이 한 파티션에서 읽을 최대 파일 수입니다. 기본값은 10입니다.

      이러한 파라미터는 파일 나열에 소요되는 시간을 줄이는 데 도움이 됩니다. 예를 들어 데이터 세트에 1,000개의 파티션이 있고 각 파티션에 10개의 파일이 있다고 가정합니다. maxSamplePartitions = 10 및 maxSampleFilesPerPartition = 10으로 설정하면 10,000개의 파일을 모두 나열하는 대신 샘플링은 각각에 처음 10개의 파일이 있는 처음 10개의 파티션만 나열하고 읽습니다(10*10 = 총 100개의 파일).

  • format - 포맷 사양입니다(선택 사항). 여러 포맷을 지원하는 Amazon S3 또는 AWS Glue 연결에 사용됩니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • format_options - 지정된 포맷에 대한 포맷 옵션입니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • push_down_predicate - 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 자세한 내용은 푸시다운 조건자를 사용하여 예비 필터링 섹션을 참조하세요.

add_ingestion_time_columns

add_ingestion_time_columns(dataFrame, timeGranularity = "")

입력 DataFrameingest_year, ingest_month, ingest_day, ingest_hour, ingest_minute와 같은 수집 시간 열을 추가합니다. 이 함수는 Amazon S3을 대상으로 하는 데이터 카탈로그 테이블을 지정할 때 AWS Glue가 생성하는 스크립트에서 자동으로 생성됩니다. 이 함수는 출력 테이블의 수집 시간 열로 파티션을 자동으로 업데이트합니다. 이를 통해 입력 데이터에 명시적인 수집 시간 열을 요구하지 않고도 출력 데이터를 수집 시간에 자동으로 분할할 수 있습니다.

  • dataFrame - 수집 시간 열을 추가할 dataFrame입니다.

  • timeGranularity - 시간 열의 세분성입니다. 유효 값은 "day", "hour" 및 "minute"입니다. 예를 들어 "hour"가 함수에 전달되면 원래 dataFrame에 "ingest_year", "ingest_month", "ingest_day" 및 "ingest_hour" 시간 열이 추가됩니다.

시간 세분성 열을 추가한 후 데이터 프레임을 반환합니다.

예제:

dynamic_frame = DynamicFrame.fromDF(glueContext.add_ingestion_time_columns(dataFrame, "hour"))

create_data_frame_from_catalog

create_data_frame_from_catalog(database, table_name, transformation_ctx = "", additional_options = {})

데이터 카탈로그 테이블의 정보를 사용하여 생성된 DataFrame을 반환합니다.

  • database - 읽을 데이터 카탈로그 데이터베이스입니다.

  • table_name - 읽을 데이터 카탈로그 테이블의 이름입니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • additional_options - 선택적 이름-값 페어의 모음입니다. 가능한 옵션에는 스트리밍 소스에 대해 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에 나열된 옵션(예: startingPosition, maxFetchTimeInMs, startingOffsets)이 있습니다.

    • useSparkDataSource - true로 설정하면 AWS Glue는 네이티브 Spark 데이터 소스 API를 사용하여 테이블을 읽도록 강제 적용합니다. Spark 데이터 소스 API는 AVRO, 바이너리, CSV, JSON, ORC, Parquet 및 텍스트 형식을 지원합니다. 데이터 카탈로그 테이블에서는 classification 속성을 사용하여 형식을 지정합니다. Spark 데이터 소스 API에 대한 자세한 내용은 공식 Apache Spark 설명서를 참조하세요.

      create_data_frame_from_cataloguseSparkDataSource와 함께 사용하면 다음과 같은 이점이 있습니다.

      • DataFrame을 직접 반환하고 create_dynamic_frame.from_catalog().toDF()에 대한 대안을 제공합니다.

      • 기본 형식에 대한 AWS Lake Formation 테이블 수준 권한 제어를 지원합니다.

      • AWS Lake Formation 테이블 수준 권한 제어 없이 데이터 레이크 형식 읽기를 지원합니다. 자세한 내용은 AWS Glue ETL 작업에서 데이터 레이크 프레임워크 사용 섹션을 참조하세요.

      useSparkDataSource를 활성화하면 필요에 따라 additional_options에서 Spark 데이터 소스 옵션을 추가할 수도 있습니다. AWS Glue는 이러한 옵션을 Spark 리더에 직접 전달합니다.

    • useCatalogSchema - true로 설정하면 AWS Glue는 결과 DataFrame에 데이터 카탈로그 스키마를 적용합니다. 그렇지 않으면 리더는 데이터에서 스키마를 추론합니다. 또한 useCatalogSchema를 활성화할 경우 useSparkDataSource를 true로 설정해야 합니다.

제한 사항

useSparkDataSource 옵션을 사용할 경우 다음과 같은 제한 사항을 고려하세요.

  • useSparkDataSource를 사용하면 AWS Glue에서는 원래 Spark 세션과 다른 별도의 Spark 세션에 새 DataFrame을 만듭니다.

  • Spark DataFrame 파티션 필터링은 다음 AWS Glue 기능에서 작동하지 않습니다.

    이러한 기능에 파티션 필터링을 사용하려면 AWS Glue 푸시다운 조건자를 사용할 수 있습니다. 자세한 내용은 푸시다운 조건자를 사용하여 예비 필터링 섹션을 참조하세요. 분할되지 않은 열에 대한 필터링에는 영향을 주지 않습니다.

    다음 예제 스크립트는 excludeStorageClasses 옵션을 사용하여 파티션 필터링을 수행하는 잘못된 방법을 보여줍니다.

    // Incorrect partition filtering using Spark filter with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Suppose year and month are partition keys. // Filtering on year and month won't work, the filtered_df will still // contain data with other year/month values. filtered_df = read_df.filter("year == '2017 and month == '04' and 'state == 'CA'")

    다음 예제 스크립트는 excludeStorageClasses 옵션을 사용하여 파티션 필터링을 수행하기 위해 푸시다운 조건자를 사용하는 올바른 방법을 보여줍니다.

    // Correct partition filtering using the AWS Glue pushdown predicate // with excludeStorageClasses read_df = glueContext.create_data_frame.from_catalog( database=database_name, table_name=table_name, // Use AWS Glue pushdown predicate to perform partition filtering push_down_predicate = "(year=='2017' and month=='04')" additional_options = { "useSparkDataSource": True, "excludeStorageClasses" : ["GLACIER", "DEEP_ARCHIVE"] } ) // Use Spark filter only on non-partitioned columns filtered_df = read_df.filter("state == 'CA'")

예: Spark 데이터 소스 리더를 사용하여 CSV 테이블 생성

// Read a CSV table with '\t' as separator read_df = glueContext.create_data_frame.from_catalog( database=<database_name>, table_name=<table_name>, additional_options = {"useSparkDataSource": True, "sep": '\t'} )

create_data_frame_from_options

create_data_frame_from_options(connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

이 API는 이제 더 이상 사용되지 않습니다. 대신에 getSource() API를 사용하십시오. 지정된 연결 및 포맷으로 생성된 DataFrame을 반환합니다. 이 함수는 AWS Glue 스트리밍 소스에만 사용합니다.

  • connection_type - 스트리밍 연결 유형입니다. 유효한 값에는 kinesiskafka이 있습니다.

  • connection_options - Kinesis 및 Kafka에 대해 서로 다른 연결 옵션입니다. AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에서 각 스트리밍 데이터 원본에 대한 모든 연결 옵션 목록을 찾을 수 있습니다. 스트리밍 연결 옵션에는 다음과 같은 차이점이 있습니다.

    • Kinesis 스트리밍 소스에는 streamARN, startingPosition, inferSchemaclassification이 필요합니다.

    • Kafka 스트리밍 소스에는 connectionName, topicName, startingOffsets, inferSchemaclassification이 필요합니다.

  • format - 포맷 사양입니다(선택 사항). 여러 포맷을 지원하는 Amazon S3 또는 AWS Glue 연결에 사용됩니다. 지원되는 포맷에 관한 내용은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션섹션을 참조하세요.

  • format_options - 지정된 포맷에 대한 포맷 옵션입니다. 지원되는 포맷 옵션에 대한 자세한 내용은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션 섹션을 참조하세요.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

Amazon Kinesis 스트리밍 소스의 예:

kinesis_options = { "streamARN": "arn:aws:kinesis:us-east-2:777788889999:stream/fromOptionsStream", "startingPosition": "TRIM_HORIZON", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kinesis", connection_options=kinesis_options)

Kafka 스트리밍 소스의 예:

kafka_options = { "connectionName": "ConfluentKafka", "topicName": "kafka-auth-topic", "startingOffsets": "earliest", "inferSchema": "true", "classification": "json" } data_frame_datasource0 = glueContext.create_data_frame.from_options(connection_type="kafka", connection_options=kafka_options)

forEachBatch

forEachBatch(frame, batch_function, options)

스트리밍 소스에서 읽는 모든 마이크로 배치에 전달된 batch_function을 적용합니다.

  • frame - 현재 마이크로 배치를 포함하는 DataFrame입니다.

  • batch_function - 모든 마이크로 배치에 적용될 함수입니다.

  • options - 마이크로 배치를 처리하는 방법에 대한 정보가 들어 있는 키-값 페어 컬렉션입니다. 다음 옵션이 필요합니다.

    • windowSize - 각 배치를 처리하는 데 소요되는 시간입니다.

    • checkpointLocation - 스트리밍 ETL 작업에 대해 체크포인트가 저장되는 위치입니다.

    • batchMaxRetries – 실패한 경우 배치를 다시 시도할 수 있는 최대 횟수입니다. 기본값은 3입니다. 이 옵션은 Glue 버전 2.0 이상에서만 구성할 수 있습니다.

예:

glueContext.forEachBatch( frame = data_frame_datasource0, batch_function = processBatch, options = { "windowSize": "100 seconds", "checkpointLocation": "s3://kafka-auth-dataplane/confluent-test/output/checkpoint/" } ) def processBatch(data_frame, batchId): if (data_frame.count() > 0): datasource0 = DynamicFrame.fromDF( glueContext.add_ingestion_time_columns(data_frame, "hour"), glueContext, "from_data_frame" ) additionalOptions_datasink1 = {"enableUpdateCatalog": True} additionalOptions_datasink1["partitionKeys"] = ["ingest_yr", "ingest_mo", "ingest_day"] datasink1 = glueContext.write_dynamic_frame.from_catalog( frame = datasource0, database = "tempdb", table_name = "kafka-auth-table-output", transformation_ctx = "datasink1", additional_options = additionalOptions_datasink1 )

Amazon S3의 데이터 집합 작업

purge_table

purge_table(catalog_id=None, database="", table_name="", options={}, transformation_ctx="")

지정된 카탈로그의 데이터베이스 및 테이블에 대한 파일을 Amazon S3에서 삭제합니다. 파티션의 모든 파일을 삭제하면 해당 파티션도 카탈로그에서 삭제됩니다.

삭제된 객체를 복구하려면 Amazon S3 버킷에서 객체 버전 관리를 설정할 수 있습니다. 객체 버전 관리가 활성화되어 있지 않은 버킷에서 객체를 삭제하는 경우에는 객체를 복구할 수 없습니다. 버전 관리가 사용되는 버킷에서 삭제된 객체를 복구하는 방법에 대한 자세한 내용은 AWS Support 지식 센터에서 삭제된 Amazon S3 객체를 검색하려면 어떻게 해야 합니까?를 참조하세요.

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(데이터 카탈로그의 계정 ID)입니다. 기본적으로 None으로 설정됩니다. None인 경우 서비스에 있는 호출 계정의 카탈로그 ID가 기본 설정됩니다.

  • database - 사용할 데이터베이스입니다.

  • table_name - 사용할 테이블의 이름입니다.

  • options - 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.

    • retentionPeriod - 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.

    • partitionPredicate - 이 조건자를 충족하는 파티션이 삭제됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 삭제되지 않습니다. 기본적으로 ""(비움)로 설정합니다.

    • excludeStorageClassesexcludeStorageClasses 집합에 스토리지 클래스가 있는 파일은 삭제되지 않습니다. 기본값은 Set()(빈 집합)입니다.

    • manifestFilePath - 매니페스트 파일 생성을 위한 선택적 경로입니다. 성공적으로 제거된 모든 파일은 Success.csv에 기록되고 실패한 파일은 Failed.csv에 기록됩니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항). 매니페스트 파일 경로에 사용됩니다.

glueContext.purge_table("database", "table", {"partitionPredicate": "(month=='march')", "retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

purge_s3_path

purge_s3_path(s3_path, options={}, transformation_ctx="")

지정된 Amazon S3 경로에서 파일을 재귀적으로 삭제합니다.

삭제된 객체를 복구하려면 Amazon S3 버킷에서 객체 버전 관리를 설정할 수 있습니다. 객체 버전 관리가 설정되어 있지 않은 버킷에서 객체를 삭제하는 경우에는 객체를 복구할 수 없습니다. 버전 관리를 사용하여 버킷에서 삭제된 객체를 복구하는 방법에 대한 자세한 내용은 AWS Support 지식 센터에서 삭제된 Amazon S3 객체를 검색하려면 어떻게 해야 합니까?를 참조하세요.

  • s3_path - s3://<bucket>/<prefix>/ 포맷으로 삭제할 파일에 대한 Amazon S3의 경로입니다.

  • options - 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.

    • retentionPeriod - 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.

    • excludeStorageClassesexcludeStorageClasses 집합에 스토리지 클래스가 있는 파일은 삭제되지 않습니다. 기본값은 Set()(빈 집합)입니다.

    • manifestFilePath - 매니페스트 파일 생성을 위한 선택적 경로입니다. 성공적으로 제거된 모든 파일은 Success.csv에 기록되고 실패한 파일은 Failed.csv에 기록됩니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항). 매니페스트 파일 경로에 사용됩니다.

glueContext.purge_s3_path("s3://bucket/path/", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/"})

transition_table

transition_table(database, table_name, transition_to, options={}, transformation_ctx="", catalog_id=None)

지정된 카탈로그의 데이터베이스 및 테이블에 대해 Amazon S3에 저장된 파일의 스토리지 클래스를 전환합니다.

두 스토리지 클래스 간에 전환할 수 있습니다. GLACIERDEEP_ARCHIVE 스토리지 클래스의 경우 이러한 클래스로 전환할 수 있습니다. 하지만 S3 RESTORE를 사용하여 GLACIERDEEP_ARCHIVE 스토리지 클래스에서 전환할 수 있습니다.

Amazon S3에서 파일 또는 파티션을 읽는 AWS Glue ETL 작업을 실행하는 경우 일부 Amazon S3 스토리지 클래스 유형을 제외할 수 있습니다. 자세한 내용은 Amazon S3 스토리지 클래스 제외를 참조하세요.

  • database - 사용할 데이터베이스입니다.

  • table_name - 사용할 테이블의 이름입니다.

  • transition_to - 전환할 Amazon S3 스토리지 클래스입니다.

  • options - 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.

    • retentionPeriod - 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.

    • partitionPredicate - 이 조건자를 충족하는 파티션이 전환됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 전환되지 않습니다. 기본적으로 ""(비움)로 설정합니다.

    • excludeStorageClassesexcludeStorageClasses 집합에 스토리지 클래스가 있는 파일은 전환되지 않습니다. 기본값은 Set()(빈 집합)입니다.

    • manifestFilePath - 매니페스트 파일 생성을 위한 선택적 경로입니다. 성공적으로 전환된 모든 파일은 Success.csv에 기록되고 실패한 파일은 Failed.csv에 기록됩니다.

    • accountId - 전환 변환을 실행할 Amazon Web Services 계정 ID입니다. 이 변환에 대해 필수입니다.

    • roleArn - 전환/변환을 실행할 AWS 역할입니다. 이 변환에 대해 필수입니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항). 매니페스트 파일 경로에 사용됩니다.

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(데이터 카탈로그의 계정 ID)입니다. 기본적으로 None으로 설정됩니다. None인 경우 서비스에 있는 호출 계정의 카탈로그 ID가 기본 설정됩니다.

glueContext.transition_table("database", "table", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

transition_s3_path

transition_s3_path(s3_path, transition_to, options={}, transformation_ctx="")

지정된 Amazon S3 경로에 있는 파일의 스토리지 클래스를 재귀적으로 전환합니다.

두 스토리지 클래스 간에 전환할 수 있습니다. GLACIERDEEP_ARCHIVE 스토리지 클래스의 경우 이러한 클래스로 전환할 수 있습니다. 하지만 S3 RESTORE를 사용하여 GLACIERDEEP_ARCHIVE 스토리지 클래스에서 전환할 수 있습니다.

Amazon S3에서 파일 또는 파티션을 읽는 AWS Glue ETL 작업을 실행하는 경우 일부 Amazon S3 스토리지 클래스 유형을 제외할 수 있습니다. 자세한 내용은 Amazon S3 스토리지 클래스 제외를 참조하세요.

  • s3_path - s3://<bucket>/<prefix>/ 포맷으로 전환할 파일에 대한 Amazon S3의 경로입니다.

  • transition_to - 전환할 Amazon S3 스토리지 클래스입니다.

  • options - 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.

    • retentionPeriod - 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.

    • partitionPredicate - 이 조건자를 충족하는 파티션이 전환됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 전환되지 않습니다. 기본적으로 ""(비움)로 설정합니다.

    • excludeStorageClassesexcludeStorageClasses 집합에 스토리지 클래스가 있는 파일은 전환되지 않습니다. 기본값은 Set()(빈 집합)입니다.

    • manifestFilePath - 매니페스트 파일 생성을 위한 선택적 경로입니다. 성공적으로 전환된 모든 파일은 Success.csv에 기록되고 실패한 파일은 Failed.csv에 기록됩니다.

    • accountId - 전환 변환을 실행할 Amazon Web Services 계정 ID입니다. 이 변환에 대해 필수입니다.

    • roleArn - 전환/변환을 실행할 AWS 역할입니다. 이 변환에 대해 필수입니다.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항). 매니페스트 파일 경로에 사용됩니다.

glueContext.transition_s3_path("s3://bucket/prefix/", "STANDARD_IA", {"retentionPeriod": 1, "excludeStorageClasses": ["STANDARD_IA"], "manifestFilePath": "s3://bucketmanifest/", "accountId": "12345678901", "roleArn": "arn:aws:iam::123456789012:user/example-username"})

추출

extract_jdbc_conf

extract_jdbc_conf(connection_name, catalog_id = None)

데이터 카탈로그에 있는 AWS Glue 연결 개체의 구성 속성이 있는 dict와 키를 반환합니다.

  • user – 데이터베이스 사용자 이름입니다.

  • password – 데이터베이스 암호입니다.

  • vendor – 공급업체를 지정합니다 (mysql, postgresql, oracle, sqlserver 등.).

  • enforceSSL – 보안 연결이 필요한지 여부를 나타내는 부울 문자열입니다.

  • customJDBCCert – 표시된 Amazon S3 경로의 특정 클라이언트 인증서를 사용합니다.

  • skipCustomJDBCCertValidation – CA에서 customJDBCCert의 유효성을 검사해야 하는지 여부를 나타내는 부울 문자열입니다.

  • customJDBCCertString – 드라이버 유형에 맞는 사용자 지정 인증서에 대한 추가 정보입니다.

  • url – (더 이상 사용되지 않음) 프로토콜, 서버 및 포트만 있는 JDBC URL입니다.

  • fullUrl - 연결이 생성될 때 입력한 JDBC URL입니다(AWS Glue 버전 3.0 이상에서 사용 가능).

JDBC 구성 검색의 예:

jdbc_conf = glueContext.extract_jdbc_conf(connection_name="your_glue_connection_name") print(jdbc_conf) >>> {'enforceSSL': 'false', 'skipCustomJDBCCertValidation': 'false', 'url': 'jdbc:mysql://myserver:3306', 'fullUrl': 'jdbc:mysql://myserver:3306/mydb', 'customJDBCCertString': '', 'user': 'admin', 'customJDBCCert': '', 'password': '1234', 'vendor': 'mysql'}

트랜잭션

start_transaction

start_transaction(read_only)

새 트랜잭션을 시작합니다. 내부적으로 Lake Formation startTransaction API를 호출합니다.

  • read_only - (부울) 이 트랜잭션이 읽기 전용인지 또는 읽기/쓰기인지를 나타냅니다. 읽기 전용 트랜잭션 ID를 사용하여 수행된 쓰기는 거부됩니다. 읽기 전용 트랜잭션은 커밋할 필요가 없습니다.

트랜잭션 ID를 반환합니다.

commit_transaction

commit_transaction(transaction_id, wait_for_commit = True)

지정된 트랜잭션을 커밋하려는 시도입니다. 트랜잭션이 커밋을 완료하기 전에 commit_transaction이 반환될 수 있습니다. 내부적으로 Lake Formation commitTransaction API를 호출합니다.

  • transaction_id - (문자열) 커밋할 트랜잭션입니다.

  • wait_for_commit - (부울) commit_transaction이 즉시 반환되는지 여부를 결정합니다. 기본값은 true입니다. false인 경우 commit_transaction은 폴링한 후 트랜잭션이 커밋될 때까지 기다립니다. 대기 시간은 최대 재시도 횟수가 6회인 지수 백오프를 사용하여 1분으로 제한됩니다.

커밋이 수행되었는지 여부를 나타내는 부울을 반환합니다.

cancel_transaction

cancel_transaction(transaction_id)

지정된 트랜잭션을 취소하려는 시도입니다. 트랜잭션이 이전에 커밋된 경우 TransactionCommittedException 예외를 반환합니다. 내부적으로 Lake Formation CancelTransaction API를 호출합니다.

  • transaction_id - (문자열) 취소할 트랜잭션입니다.

작성

getSink

getSink(connection_type, format = None, transformation_ctx = "", **options)

외부 소스로 DataSink를 읽을 때 사용되는 DynamicFrames 객체를 얻습니다. 먼저 SparkSQL format를 확인하여 예상 싱크를 얻도록 합니다.

  • connection_type - Amazon S3, Amazon Redshift 및 JDBC와 같이 사용할 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserveroracle가 있습니다.

  • format - 사용할 SparkSQL 포맷입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • options - 연결 옵션을 지정하는 데 사용되는 이름-값 페어의 컬렉션입니다. 몇 가지 가능한 값은 다음과 같습니다.

    • userpassword: 권한 부여용

    • url: 데이터 스토어에 대한 엔드포인트

    • dbtable: 대상 테이블의 이름

    • bulkSize: 삽입 작업의 병렬 처리 수준

지정할 수 있는 옵션은 연결 유형에 따라 다릅니다. 추가 값과 예제는 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

예제:

>>> data_sink = context.getSink("s3") >>> data_sink.setFormat("json"), >>> data_sink.writeFrame(myFrame)

write_dynamic_frame_from_options

write_dynamic_frame_from_options(frame, connection_type, connection_options={}, format=None, format_options={}, transformation_ctx = "")

지정한 연결 및 포맷을 사용하여 DynamicFrame를 작성하고 반환합니다.

  • frame - 작성할 DynamicFrame입니다.

  • connection_type - Amazon S3, Amazon Redshift 및 JDBC 등의 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserveroracle가 있습니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항). s3connection_type의 경우, Amazon S3 경로가 정의됩니다.

    connection_options = {"path": "s3://aws-glue-target/temp"}

    JDBC 연결의 경우, 몇 까지 속성이 정의되어야 합니다. 단, 데이터베이스 이름이 URL의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

    주의

    스크립트에 암호를 저장하는 것은 권장되지 않습니다. AWS Secrets Manager 또는 AWS Glue 데이터 카탈로그에서 데이터를 검색할 때 boto3 사용을 고려합니다.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 속성은 JDBC 테이블의 이름입니다. 데이터베이스 내의 스키마를 지원하는 JDBC 데이터 스토어의 경우 schema.table-name에 대해 지정합니다. 스키마가 제공되지 않으면 기본 "퍼블릭" 스키마가 사용됩니다.

    자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • format - 포맷 사양입니다(선택 사항). 여러 포맷을 지원하는 Amazon S3 또는 AWS Glue 연결에 사용됩니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • format_options - 지정된 포맷에 대한 포맷 옵션입니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

write_from_options

write_from_options(frame_or_dfc, connection_type, connection_options={}, format={}, format_options={}, transformation_ctx = "")

지정한 연결 및 포맷 정보로 생성된 DynamicFrame 또는 DynamicFrameCollection을 작성하고 반환합니다.

  • frame_or_dfc – 작성할 DynamicFrame 또는 DynamicFrameCollection입니다.

  • connection_type - Amazon S3, Amazon Redshift 및 JDBC 등의 연결 유형입니다. 유효한 값에는 s3, mysql, postgresql, redshift, sqlserveroracle가 있습니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항). s3connection_type의 경우, Amazon S3 경로가 정의됩니다.

    connection_options = {"path": "s3://aws-glue-target/temp"}

    JDBC 연결의 경우, 몇 까지 속성이 정의되어야 합니다. 단, 데이터베이스 이름이 URL의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

    주의

    스크립트에 암호를 저장하는 것은 권장되지 않습니다. AWS Secrets Manager 또는 AWS Glue 데이터 카탈로그에서 데이터를 검색할 때 boto3 사용을 고려합니다.

    connection_options = {"url": "jdbc-url/database", "user": "username", "password": passwordVariable,"dbtable": "table-name", "redshiftTmpDir": "s3-tempdir-path"}

    dbtable 속성은 JDBC 테이블의 이름입니다. 데이터베이스 내의 스키마를 지원하는 JDBC 데이터 스토어의 경우 schema.table-name에 대해 지정합니다. 스키마가 제공되지 않으면 기본 "퍼블릭" 스키마가 사용됩니다.

    자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • format - 포맷 사양입니다(선택 사항). 여러 포맷을 지원하는 Amazon S3 또는 AWS Glue 연결에 사용됩니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • format_options - 지정된 포맷에 대한 포맷 옵션입니다. 지원되는 포맷은 AWS Glue for Spark에서 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

write_dynamic_frame_from_catalog

write_dynamic_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)

데이터 카탈로그 데이터베이스 및 테이블의 정보를 사용하여 DynamicFrame을 작성하고 반환합니다.

  • frame - 작성할 DynamicFrame입니다.

  • Database - 테이블이 들어 있는 데이터 카탈로그 데이터베이스입니다.

  • table_name - 대상과 연결된 데이터 카탈로그 테이블의 이름입니다.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • additional_options - 선택적 이름-값 페어의 모음입니다.

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(계정 ID)입니다. None인 경우 호출자의 기본 계정 ID가 사용됩니다.

write_data_frame_from_catalog

write_data_frame_from_catalog(frame, database, table_name, redshift_tmp_dir, transformation_ctx = "", additional_options = {}, catalog_id = None)

데이터 카탈로그 데이터베이스 및 테이블의 정보를 사용하여 DataFrame을 작성하고 반환합니다. 이 메서드는 데이터 레이크 형식(Hudi, Iceberg, Delta Lake) 쓰기를 지원합니다. 자세한 내용은 AWS Glue ETL 작업에서 데이터 레이크 프레임워크 사용 섹션을 참조하세요.

  • frame - 작성할 DataFrame입니다.

  • Database - 테이블이 들어 있는 데이터 카탈로그 데이터베이스입니다.

  • table_name - 대상과 연결된 데이터 카탈로그 테이블의 이름입니다.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • additional_options - 선택적 이름-값 페어의 모음입니다.

    • useSparkDataSink - true로 설정하면 AWS Glue가 네이티브 Spark 데이터 싱크 API를 사용하여 테이블에 쓰도록 강제 적용합니다. 이 옵션을 활성화하면 필요에 따라 Spark 데이터 소스 옵션additional_options에 추가할 수 있습니다. AWS Glue는 이러한 옵션을 Spark 라이터에 직접 전달합니다.

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(계정 ID)입니다. 값을 지정하지 않으면 발신자의 기본 계정 ID가 사용됩니다.

제한 사항

useSparkDataSink 옵션을 사용할 경우 다음과 같은 제한 사항을 고려하세요.

  • useSparkDataSink 옵션을 사용하는 경우 enableUpdateCatalog 옵션이 지원되지 않습니다.

예: Spark 데이터 소스 라이터를 사용하여 Hudi 테이블에 쓰기

hudi_options = { 'useSparkDataSink': True, 'hoodie.table.name': <table_name>, 'hoodie.datasource.write.storage.type': 'COPY_ON_WRITE', 'hoodie.datasource.write.recordkey.field': 'product_id', 'hoodie.datasource.write.table.name': <table_name>, 'hoodie.datasource.write.operation': 'upsert', 'hoodie.datasource.write.precombine.field': 'updated_at', 'hoodie.datasource.write.hive_style_partitioning': 'true', 'hoodie.upsert.shuffle.parallelism': 2, 'hoodie.insert.shuffle.parallelism': 2, 'hoodie.datasource.hive_sync.enable': 'true', 'hoodie.datasource.hive_sync.database': <database_name>, 'hoodie.datasource.hive_sync.table': <table_name>, 'hoodie.datasource.hive_sync.use_jdbc': 'false', 'hoodie.datasource.hive_sync.mode': 'hms'} glueContext.write_data_frame.from_catalog( frame = <df_product_inserts>, database = <database_name>, table_name = <table_name>, additional_options = hudi_options )

write_dynamic_frame_from_jdbc_conf

write_dynamic_frame_from_jdbc_conf(frame, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

지정한 JDBC 연결 정보를 사용하여 DynamicFrame를 작성하고 반환합니다.

  • frame - 작성할 DynamicFrame입니다.

  • catalog_connection - 사용할 카탈로그 연결입니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항). 자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(계정 ID)입니다. None인 경우 호출자의 기본 계정 ID가 사용됩니다.

write_from_jdbc_conf

write_from_jdbc_conf(frame_or_dfc, catalog_connection, connection_options={}, redshift_tmp_dir = "", transformation_ctx = "", catalog_id = None)

지정한 JDBC 연결 정보를 사용하여 DynamicFrame 또는 DynamicFrameCollection을 작성하고 반환합니다.

  • frame_or_dfc – 작성할 DynamicFrame 또는 DynamicFrameCollection입니다.

  • catalog_connection - 사용할 카탈로그 연결입니다.

  • connection_options - 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항). 자세한 내용은 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션 섹션을 참조하세요.

  • redshift_tmp_dir – 사용할 Amazon Redshift 임시 디렉터리입니다(선택 사항).

  • transformation_ctx - 사용할 변환 내용입니다(선택 사항).

  • catalog_id - 액세스 중인 데이터 카탈로그의 카탈로그 ID(계정 ID)입니다. None인 경우 호출자의 기본 계정 ID가 사용됩니다.