Teradata NOS (Native Object Store) 接続は、Teradata Vantage の新しい接続です。これは、Teradata WRITE_NOS クエリを活用して既存のテーブルから読み取り、READ_NOS クエリを使用してテーブルに書き込みます。これらのクエリはステージングディレクトリとして Amazon S3 を使用するため、Teradata NOS コネクタは、既存の Teradata コネクタ (JDBC ベース) よりも高速で、特に大量のデータを処理できます。
Spark 向けの AWS Glue の 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]、[サブネット]、および [セキュリティグループ] を特定または作成します。さらに、Teradata インスタンスとこの場所の間のネットワークトラフィックを許可するように Amazon VPC が設定されているようにする必要があります。ジョブでは、Teradata クライアントポートとの TCP 接続を確立する必要があります。Teradata ポートの詳細については、「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
を保存しておきます。-
[Key/value ペア] を選択する際に、
teradataUsername
という値を持つキーユーザーのペアを作成します。 -
[Key/value ペア] を選択する際に、
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 ジョブ設定では、[接続] で [Additional network connection] (追加のネットワーク接続) として
connectionName
を指定します。
Teradata テーブルからの読み取り
前提条件:
-
読み取り元とする Teradata テーブル。テーブル名
tableName
が必要になります。 -
Teradata 環境には、
staging_fs_url
オプションで指定された Amazon S3 パスであるstagingFsUrl
への書き込みアクセス権があります。 -
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 クエリを指定して、DynamicFrame に返される結果をフィルタリングすることもできます。クエリを設定する必要があります。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
オプションで指定された Amazon S3 の場所であるstagingFsUrl
への読み取りアクセス権があります。 -
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 パーティションの最大サイズ (メガバイト)。デフォルト値は 128 です。
Teradata ノードを作成する際に、高度なオプションを指定できます。これらのオプションは Spark AWS Glue スクリプトのプログラミング時に使用できるオプションと同じです。
「Teradata Vantage 接続」を参照してください。