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에서 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)

Data Catalog 데이터베이스 및 테이블 이름을 사용하여 생성된 DynamicFrame을 반환합니다.

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

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

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

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

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

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

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

  • catalog_id - 액세스 중인 Data Catalog의 카탈로그 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의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

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

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

    자세한 정보는 AWS Glue에서 ETL 관련 연결 유형 및 옵션을 참조하십시오.

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

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

  • 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에서 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 - 액세스 중인 Data Catalog의 카탈로그 ID(Data Catalog의 계정 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에서 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에서의 입력 및 출력의 데이터 형식 옵션를 참조하십시오.

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

  • 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을 대상으로 하는 Data Catalog 테이블을 지정할 때 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 = {})

Data Catalog 테이블의 정보를 사용하여 생성된 DataFrame을 반환합니다. 이 함수는 AWS Glue 스트리밍 소스에만 사용합니다.

  • database - 읽을 Data Catalog 데이터베이스입니다.

  • table_name - 읽을 Data Catalog 테이블의 이름입니다.

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

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

예:

df = glueContext.create_data_frame.from_catalog( database = "MyDB", table_name = "streaming_table", transformation_ctx = "df", additional_options = {"startingPosition": "TRIM_HORIZON", "inferSchema": "true"})

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에서 ETL 관련 연결 유형 및 옵션에서 각 스트리밍 데이터 원본에 대한 모든 연결 옵션 목록을 찾을 수 있습니다. 스트리밍 연결 옵션에는 다음과 같은 차이점이 있습니다.

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

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

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

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

  • 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 - 액세스 중인 Data Catalog의 카탈로그 ID(Data Catalog의 계정 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 - 액세스 중인 Data Catalog의 카탈로그 ID(Data Catalog의 계정 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에서 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의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

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

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

    자세한 정보는 AWS Glue에서 ETL 관련 연결 유형 및 옵션을 참조하십시오.

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

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

  • 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의 일부여야 합니다. 연결 옵션에 선택적으로 포함될 수 있습니다.

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

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

    자세한 정보는 AWS Glue에서 ETL 관련 연결 유형 및 옵션을 참조하십시오.

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

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

  • 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)

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

  • frame - 작성할 DynamicFrame입니다.

  • Database - 테이블이 들어 있는 Data Catalog 데이터베이스입니다.

  • table_name - 대상과 연결된 Data Catalog 테이블의 이름입니다.

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

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

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

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

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에서 ETL 관련 연결 유형 및 옵션을 참조하십시오.

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

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

  • catalog_id - 액세스 중인 Data Catalog의 카탈로그 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에서 ETL 관련 연결 유형 및 옵션을 참조하십시오.

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

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

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