기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
GlueContext 클래스
Apache Spark SparkContext
__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
,oracle
및dynamodb
가 있습니다.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
- 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 지원되는 소스 및 제한 사항은 AWS Glue ETL의 푸시다운으로 읽기 최적화를 참조하세요. 자세한 내용은 푸시다운 조건자를 사용하여 예비 필터링 단원을 참조하십시오.additional_options
- 선택적 이름-값 페어의 모음입니다. 가능한 옵션에는 AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에 나열된 옵션이 포함됩니다(endpointUrl
,streamName
,bootstrap.servers
,security.protocol
,topicName
,classification
및delimiter
제외). 지원되는 또 다른 옵션은catalogPartitionPredicate
입니다.catalogPartitionPredicate
- 카탈로그 표현식을 전달하여 인덱스 열을 기준으로 필터링할 수 있습니다. 이렇게 하면 필터링이 서버 측으로 푸시됩니다. 자세한 내용은 AWS Glue 파티션 인덱스를 참조하세요.push_down_predicate
와catalogPartitionPredicate
는 다른 구문을 사용합니다. 전자는 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
,oracle
및dynamodb
가 있습니다.connection_options
- 경로 및 데이터베이스 테이블과 같은 연결 옵션(선택 사항).s3
의connection_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
- 데이터 집합 내 모든 파일을 나열하거나 읽지 않아도 파티션에 필터링할 수 있습니다. 지원되는 소스 및 제한 사항은 AWS Glue ETL의 푸시다운으로 읽기 최적화를 참조하세요. 자세한 내용은 푸시다운 조건자를 사용하여 사전 필터링을 참조하세요.
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
,classification
및delimiter
제외). -
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
,oracle
및dynamodb
가 있습니다.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 = "")
입력 DataFrame
에 ingest_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_catalog
를useSparkDataSource
와 함께 사용하면 다음과 같은 이점이 있습니다.-
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
- 스트리밍 연결 유형입니다. 유효한 값에는kinesis
및kafka
(이)가 있습니다. -
connection_options
- Kinesis 및 Kafka에 대해 서로 다른 연결 옵션입니다. AWS Glue for Spark에서 ETL에 대한 연결 유형 및 옵션에서 각 스트리밍 데이터 원본에 대한 모든 연결 옵션 목록을 찾을 수 있습니다. 스트리밍 연결 옵션에는 다음과 같은 차이점이 있습니다.-
Kinesis 스트리밍 소스에는
streamARN
,startingPosition
,inferSchema
및classification
이 필요합니다. -
Kafka 스트리밍 소스에는
connectionName
,topicName
,startingOffsets
,inferSchema
및classification
이 필요합니다.
-
-
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
- 이 조건자를 충족하는 파티션이 삭제됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 삭제되지 않습니다. 기본적으로""
(비움)로 설정합니다.excludeStorageClasses
–excludeStorageClasses
집합에 스토리지 클래스가 있는 파일은 삭제되지 않습니다. 기본값은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://<
포맷으로 삭제할 파일에 대한 Amazon S3의 경로입니다.bucket
>/<prefix
>/options
- 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.retentionPeriod
- 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.excludeStorageClasses
–excludeStorageClasses
집합에 스토리지 클래스가 있는 파일은 삭제되지 않습니다. 기본값은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에 저장된 파일의 스토리지 클래스를 전환합니다.
두 스토리지 클래스 간에 전환할 수 있습니다. GLACIER
및 DEEP_ARCHIVE
스토리지 클래스의 경우 이러한 클래스로 전환할 수 있습니다. 하지만 S3 RESTORE
를 사용하여 GLACIER
및 DEEP_ARCHIVE
스토리지 클래스에서 전환할 수 있습니다.
Amazon S3에서 파일 또는 파티션을 읽는 AWS Glue ETL 작업을 실행하는 경우 일부 Amazon S3 스토리지 클래스 유형을 제외할 수 있습니다. 자세한 내용은 Amazon S3 스토리지 클래스 제외를 참조하세요.
database
- 사용할 데이터베이스입니다.table_name
- 사용할 테이블의 이름입니다.transition_to
- 전환할 Amazon S3 스토리지 클래스입니다.options
- 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.retentionPeriod
- 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.partitionPredicate
- 이 조건자를 충족하는 파티션이 전환됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 전환되지 않습니다. 기본적으로""
(비움)로 설정합니다.excludeStorageClasses
–excludeStorageClasses
집합에 스토리지 클래스가 있는 파일은 전환되지 않습니다. 기본값은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 경로에 있는 파일의 스토리지 클래스를 재귀적으로 전환합니다.
두 스토리지 클래스 간에 전환할 수 있습니다. GLACIER
및 DEEP_ARCHIVE
스토리지 클래스의 경우 이러한 클래스로 전환할 수 있습니다. 하지만 S3 RESTORE
를 사용하여 GLACIER
및 DEEP_ARCHIVE
스토리지 클래스에서 전환할 수 있습니다.
Amazon S3에서 파일 또는 파티션을 읽는 AWS Glue ETL 작업을 실행하는 경우 일부 Amazon S3 스토리지 클래스 유형을 제외할 수 있습니다. 자세한 내용은 Amazon S3 스토리지 클래스 제외를 참조하세요.
s3_path
-s3://<
포맷으로 전환할 파일에 대한 Amazon S3의 경로입니다.bucket
>/<prefix
>/transition_to
- 전환할 Amazon S3 스토리지 클래스입니다.options
- 삭제할 파일 필터링 및 매니페스트 파일 생성을 위한 옵션입니다.retentionPeriod
- 파일을 보존할 기간(시간)을 지정합니다. 보존 기간 내의 파일은 유지됩니다. 기본적으로 168시간(7일)으로 설정됩니다.partitionPredicate
- 이 조건자를 충족하는 파티션이 전환됩니다. 이러한 파티션에서 보존 기간 내에 있는 파일은 전환되지 않습니다. 기본적으로""
(비움)로 설정합니다.excludeStorageClasses
–excludeStorageClasses
집합에 스토리지 클래스가 있는 파일은 전환되지 않습니다. 기본값은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
,sqlserver
,oracle
,kinesis
,kafka
가 있습니다.format
- 사용할 SparkSQL 포맷입니다(선택 사항).transformation_ctx
- 사용할 변환 내용입니다(선택 사항).options
- 연결 옵션을 지정하는 데 사용되는 이름-값 페어의 컬렉션입니다. 몇 가지 가능한 값은 다음과 같습니다.-
user
및password
: 권한 부여용 -
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
,sqlserver
,oracle
,kinesis
,kafka
가 있습니다.connection_options
- 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항).s3
의connection_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
,sqlserver
및oracle
가 있습니다.connection_options
- 경로 및 데이터베이스 테이블과 같은 연결 옵션입니다(선택 사항).s3
의connection_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가 사용됩니다.