Teradata NOS(네이티브 객체 스토어) 연결은 Teradata WRITE_NOS 쿼리를 활용하여 기존 테이블에서 읽고 READ_NOS 쿼리를 활용하여 테이블에 쓰는 Teradata Vantage에 대한 새로운 연결입니다. 이 쿼리는 Amazon S3을 스테이징 디렉터리로 사용하므로 특히 대량의 데이터를 처리할 때 Teradata NOS 커넥터가 기존 Teradata 커넥터(JDBC 기반)보다 빠릅니다.
AWS Glue for Spark에서 Teradata NOS 연결을 이용하여 AWS Glue 5.0 이상 버전에서 Teradata Vantage의 테이블에서 읽고 쓸 수 있습니다. SQL 쿼리를 사용하여 Teradata에서 읽을 내용을 정의할 수 있습니다. AWS Glue 연결을 통해 AWS Secrets Manager에 저장된 사용자 이름 및 암호 자격 증명을 사용하여 Teradata에 연결할 수 있습니다.
Teradata에 대한 자세한 내용은 Teradata 설명서
Teradata NOS 연결 생성
AWS Glue에서 Teradata NOS에 연결하려면 Teradata 자격 증명을 생성하여 AWS Secrets Manager 암호에 저장한 다음 해당 암호를 AWS Glue Teradata NOS 연결에 연결해야 합니다. Teradata 인스턴스가 Amazon VPC에 있는 경우 AWS Glue Teradata NOS 연결에 네트워킹 옵션도 제공해야 합니다.
사전 조건:
-
Amazon VPC를 통해 Teradata 환경에 액세스하는 경우, AWS Glue 작업이 Teradata 환경과 통신할 수 있도록 Amazon VPC를 구성하십시오. 퍼블릭 인터넷을 통해 Teradata 환경에 액세스하는 것은 권장하지 않습니다.
-
Amazon VPC에서 작업을 실행하는 동안 AWS Glue가 사용할 VPC, 서브넷 및 보안 그룹을 식별하거나 생성합니다. 또한 Amazon VPC가 Teradata 인스턴스와 이 위치 간의 네트워크 트래픽을 허용하도록 구성되어 있는지 확인해야 합니다. 작업을 수행하려면 Teradata 클라이언트 포트와 TCP 연결을 설정해야 합니다. Teradata 포트에 대한 자세한 내용은 Security Groups for Teradata Vantage
을 참조하세요. -
네트워크 레이아웃에 따라 보안 VPC 연결에는 Amazon VPC 및 기타 네트워킹 서비스를 변경해야 할 수 있습니다. AWS 연결에 대한 자세한 내용은 Teradata 설명서의 AWS 연결 옵션
을 참조하세요.
AWS Glue Teradata NOS 연결을 구성하는 방법:
-
Teradata 구성에서 AWS Glue가 연결할
teradataUsername
및teradataPassword
를 식별하거나 생성합니다. 자세한 내용은 Teradata 설명서의 Vantage 보안 개요를 참조하세요. -
AWS Secrets Manager에서 Teradata 보안 인증 정보를 사용하여 보안 암호를 생성합니다. AWS Secrets Manager에서 보안 암호를 생성하려면 AWS Secrets Manager 설명서의 AWS Secrets Manager 보안 암호 생성에서 제공하는 자습서를 따릅니다. 보안 암호를 생성한 후에는 다음 단계를 위해 보안 암호 이름,
secretName
을 유지합니다.-
키/값 페어를 선택하면 값
teradataUsername
이 포함된 키 사용자에 대한 페어를 생성합니다. -
키/값 페어를 선택하면 값
teradataPassword
가 포함된 키 암호에 대한 페어를 생성합니다.
-
-
AWS Glue 콘솔에서 AWS Glue 연결 추가의 단계에 따라 연결을 생성합니다. 연결을 생성한 후에는 다음 단계를 위해 연결 이름,
connectionName
을 유지합니다.-
연결 유형을 선택할 때 Teradata Vantage NOS를 선택합니다.
-
JDBC URL을 제공할 때는 인스턴스의 URL을 제공하십시오. 또한 JDBC URL에 쉼표로 구분된 특정 연결 매개변수를 하드코딩할 수 있습니다. URL은 다음 형식을 준수해야 합니다.
jdbc:teradata://teradataHostname/ParameterName=ParameterValue,ParameterName=ParameterValue
-
지원되는 URL 파라미터는 다음과 같습니다.
-
DATABASE
- 기본으로 액세스하는 호스트의 데이터베이스 이름입니다. -
DBS_PORT
- 비표준 포트에서 실행할 때 사용되는 데이터베이스 포트입니다.
-
-
자격 증명 유형을 선택할 때에는 AWS Secrets Manager을 선택한 다음 AWS 보안 암호를
secretName
으로 설정합니다.
-
-
다음과 같은 상황에서는 추가 구성이 필요할 수도 있습니다.
-
Amazon VPC의 AWS에 호스팅된 Teradata 인스턴스의 경우 Teradata 보안 자격 증명을 정의하는 AWS Glue 연결에 Amazon VPC 연결 정보를 제공해야 합니다. 연결을 만들거나 업데이트할 때 네트워크 옵션에서 VPC, 서브넷, 보안 그룹을 설정합니다.
-
AWS Glue Teradata Vantage NOS 연결을 생성한 후에는 연결 방법을 호출하기 전에 다음 단계를 수행해야 합니다.
-
AWS Glue 작업 권한과 연결된 IAM 역할에
secretName
을 읽을 수 있는 권한을 부여합니다. -
AWS Glue 작업 구성에서 연결의 추가 네트워크 연결로
connectionName
을 제공합니다.
Teradata 테이블에서 읽기
사전 조건:
-
읽으려는 Teradata 테이블. 테이블 이름,
tableName
이 필요합니다. -
Teradata 환경에는
staging_fs_url
옵션인stagingFsUrl
에서 지정한 Amazon S3 경로에 대한 쓰기 액세스 권한이 있습니다. -
AWS Glue 작업과 연결된 IAM 역할은
staging_fs_url
옵션에서 지정한 Amazon S3 위치에 대한 쓰기 액세스 권한이 있습니다. -
인증 정보를 제공하도록 구성된 AWS Glue Teradata NOS 연결입니다. 인증 정보를 구성하는 AWS Glue Teradata NOS 연결을 구성하는 방법: 단계를 완료합니다. AWS Glue 연결의 이름인
connectionName
이 필요합니다.
예시:
teradata_read_table = glueContext.create_dynamic_frame.from_options( connection_type=
"teradatanos"
, connection_options={ "connectionName":"connectionName"
, "dbtable":"tableName"
, "staging_fs_url":"stagingFsUrl"
} )
SELECT SQL 쿼리에 반환되는 결과를 필터링하는 쿼리를 제공할 수도 있습니다. 쿼리를 구성해야 합니다. dbTable과 쿼리를 모두 구성하면 커넥터가 데이터를 읽지 못합니다. 예시:
teradata_read_query = glueContext.create_dynamic_frame.from_options( connection_type=
"teradatanos"
, connection_options={ "connectionName":"connectionName"
, "query":"query"
, "staging_fs_url":"stagingFsUrl"
} )
또한 Spark DataFrame API를 사용하여 Teradata 테이블에서 읽을 수 있습니다. 예시:
options = { "url":
"JDBC_URL"
, "dbtable":"tableName"
, "user":"teradataUsername"
, "password":"teradataPassword"
, "staging_fs_url":"stagingFsUrl
" } teradata_read_table = spark.read.format("teradatanos").option(**options).load()
Teradata 테이블에 쓰기
사전 조건
-
쓰고 싶은 Teradata 테이블인
tableName
입니다. -
Teradata 환경에는
staging_fs_url
옵션인stagingFsUrl
에 의해 지정된 Amazon S3 위치에 대한 읽기 액세스 권한이 있습니다. -
AWS Glue 작업과 연결된 IAM 역할은
staging_fs_url
옵션에서 지정한 Amazon S3 위치에 대한 쓰기 액세스 권한이 있습니다. -
인증 정보를 제공하도록 구성된 AWS Glue Teradata 연결입니다. AWS Glue Teradata NOS 연결을 구성하는 방법:의 단계를 완료하여 인증 정보를 구성합니다. AWS Glue 연결의 이름인
connectionName
이 필요합니다.예시:
teradata_write = glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type=
"teradatanos"
, connection_options={ "connectionName":"connectionName"
, "dbtable":"tableName"
, "staging_fs_url":"stagingFsUrl"
} )
AWS Glue Studio를 사용하여 Teradata 작업 생성
AWS Glue Studio는 시각적 ETL 작업으로 AWS Glue 작업 생성을 지원합니다. 성공적인 AWS Glue 작업을 구성하려면 데이터 소스 및 대상을 구성하는 것 외에 UI의 Custom Teradata Vantage NOS 속성에 필요한 아래의 속성을 제공해야 합니다.
-
dbtable
-
staging_fs_url
Teradata 연결 옵션 참조
-
connectionName
— 필수입니다. 읽기 및 쓰기에 사용됩니다. 연결 방법에 인증 및 네트워킹 정보를 제공하도록 구성된 AWS Glue Teradata 연결의 이름입니다. -
staging_fs_url
— 필수입니다. 읽기 및 쓰기에 사용됩니다. Amazon S3의 쓰기 가능한 위치로, Teradata에서 읽을 때 언로드된 데이터에 사용되며 Teradata에 쓸 때 Parquet 데이터를 Redshift에 로드하는 데 사용됩니다. S3 버킷이 AWS Glue 작업과 동일한 리전에 있어야 합니다. -
dbtable
- 쓰기 시 필수,query
가 제공되지 않는 한 읽기 전용. 읽기 및 쓰기에 사용됩니다. 연결 방법이 상호 작용할 테이블의 이름. -
query
— 읽기에 사용됩니다. Teradata에서 읽을 때 검색해야 하는 내용을 정의하는 SELECT SQL 쿼리입니다.dbtable
옵션이 제공된 경우 전달할 수 없습니다. -
clean_staging_s3_dir
-선택 사항입니다. 읽기 및 쓰기에 사용됩니다. true인 경우 읽기 또는 쓰기 후 스테이징 Amazon S3 객체를 정리합니다. 기본값은 true입니다. -
pre_actions
-선택 사항입니다. 쓰기에 사용됩니다. Spark와 Teradata Vantage 간에 데이터가 전송되기 전에 실행되는 세미콜론으로 구분된 SQL 명령 목록입니다. -
post_actions
-선택 사항입니다. 쓰기에 사용됩니다. Spark와 Teradata Vantage 간에 데이터가 전송된 후에 실행되는 세미콜론으로 구분된 SQL 명령 목록입니다. -
truncate
-선택 사항입니다. 쓰기에 사용됩니다. true인 경우 커넥터는 덮어쓰기 모드로 쓸 때 테이블을 잘라냅니다. false인 경우 커넥터는 덮어쓰기 모드로 쓸 때 테이블을 삭제합니다. 기본값은 false입니다. -
create_table_script
-선택 사항입니다. 쓰기에 사용됩니다. Teradata Vantage에 쓸 때 테이블을 생성하는 SQL 문입니다. 사용자 지정 메타데이터(예: CREATE MULTISET 또는 SET 테이블 또는 기본 인덱스 변경)가 있는 테이블을 생성하려는 경우에 유용합니다. 테이블 스크립트 생성에 사용되는 테이블 이름은dbtable
옵션에 지정된 테이블 이름과 일치해야 합니다. -
partition_size_in_mb
-선택 사항입니다. 읽기에 사용됩니다. 스테이징 Amazon S3 객체를 읽는 동안 Spark 파티션의 최대 크기(MB)입니다. 기본값은 128입니다.
Teradata 노드를 생성할 때 고급 옵션을 제공할 수 있습니다. 이 옵션은 Spark 스크립트에 대한 AWS Glue를 프로그래밍할 때 사용할 수 있는 옵션과 동일합니다.
Teradata Vantage 연결를 참조하세요.