その他の設定オプション - Amazon Redshift

その他の設定オプション

このページでは、Amazon Redshift Spark コネクタのために指定できるオプションを説明しています。

文字列列の最大サイズ

Redshift は、テーブルの作成時に文字列列をテキスト列として作成し、VARCHAR (256) として格納します。より大きなサイズをサポートする列が必要な場合は、maxlength を使用して文字列列の最大長を指定できます。maxlength を指定する方法の例を次に示します。

columnLengthMap.foreach { case (colName, length) => val metadata = new MetadataBuilder().putLong("maxlength", length).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }

[列のタイプ]

列タイプを設定するには、redshift_type フィールドを使用します。

columnTypeMap.foreach { case (colName, colType) => val metadata = new MetadataBuilder().putString("redshift_type", colType).build() df = df.withColumn(colName, df(colName).as(colName, metadata)) }

列の圧縮エンコード

列に特定の圧縮エンコードを使用するには、エンコードフィールドを使用します。サポートされている圧縮エンコードの詳細なリストについては、「圧縮エンコード」を参照してください。

列の説明

説明を設定するには、description フィールドを使用します。

Redshift と Amazon S3 間の認証

デフォルトでは、結果は Parquetet 形式で Amazon S3 にアンロードされます。結果をパイプ区切りのテキストファイルとしてアンロードするには、次のオプションを指定します。

.option("unload_s3_format", "TEXT")

プッシュダウンステートメント

[Parameter] (パラメータ) 必須 デフォルト 説明
spark.datasource.redshift.community.autopushdown.lazyMode いいえ

コネクタがプッシュダウンステートメント Redshift を遅延実行するかどうかを指定します。

true の場合、Spark コネクタはクエリを実行する前に関連するモデルと情報をすべて取得するため、一般的にパフォーマンスが向上します。

false の場合、Spark コネクタはメインの Spark ドライバースレッドでプッシュダウンステートメントを直ちに実行し、式間でシリアル化されます。

コネクタパラメータ

パラメータマップまたは Spark SQL の OPTIONS は次の設定をサポートしています。

パラメータ 必須 デフォルト 説明
dbtable はい (query が指定されていない限り) 該当なし Redshift で作成したり読み込んだりするテーブル。データを Redshift に戻して保存する場合、このパラメータは必須です。
query はい (dbtable が指定されていない限り) 該当なし Redshift で読み込むクエリ。
user いいえ 該当なし Redshift の username。password パラメータと一緒に使用する必要があります。ユーザーとパスワードが URL のパラメータではない場合にのみ有効です。両方使用すると、エラーが発生します。
password いいえ 該当なし Redshift の password。user パラメータと一緒に使用する必要があります。ユーザーとパスワードが URL のパラメータではない場合にのみ有効です。両方使用すると、エラーが発生します。
url いいえ 該当なし

JDBC URL。書式は jdbc:subprotocol://host:port/database?user=username&password=password です。

subprotocol は、ロードした JDBC ドライバーに応じて、postgresql または Redshift にすることができます。1 つの Redshift 互換ドライバーがクラスパスに含まれていて、この URL と一致する必要があることに注意してください。

ホストとポートは Redshift マスターノードを指す必要があるため、ドライバーアプリケーションからのアクセスを許可するようにセキュリティグループや VPC を設定する必要があります。

database は Redshift のデータベース名です。

user および password はデータベースにアクセスするための認証情報で、この JDBC の URL に埋め込む必要があります。また、データベースユーザーにはテーブルにアクセスするための許可が必要です。

aws_iam_role IAM ロールを使用して Redshift の COPY/UNLOAD オペレーションを許可する場合のみ 該当なし Redshift クラスターにアタッチされた IAM ロールの完全に指定された ARN。
forward_spark_s3_credentials いいえ False Spark が Amazon S3 への接続に使用する認証情報をこのライブラリが自動的に検出するかどうか、またそれらの認証情報を JDBC ドライバー経由で Redshift に転送するかどうかを示します。これらの認証情報は JDBC クエリの一部として送信されます。そのため、このオプションを使用する場合は、JDBC 接続による SSL 暗号化を有効にすることをお勧めします。
temporary_aws_access_key_id いいえ 該当なし AWS アクセスキー S3 バケットへの書き込み権限が必要です。
temporary_aws_secret_access_key いいえ 該当なし アクセスキーに対応する AWS シークレットアクセスキーです。
temporary_aws_session_token いいえ 該当なし 提供されたアクセスキーに対応する AWS セッショントークン。
tempdir いいえ 該当なし Amazon S3 の書き込み可能な場所。読み取り時にデータをアンロードし、書き込み時に Avro データを Redshift にロードするために使用されます。通常の ETL パイプラインの一部として Spark 用の Redshift データソースを使用している場合は、バケットにライフサイクルポリシーを設定して、それをこのデータの一時的な場所として使用すると便利です。
jdbcdriver いいえ JDBC URL のサブプロトコルによって決定されます 使用する JDBC ドライバーのクラス名。このクラスはクラスパス上にある必要があります。ほとんどの場合、適切なドライバークラス名は JDBC URL のサブプロトコルによって自動的に決定されるため、このオプションを指定する必要はありません。
diststyle いいえ Even テーブルを作成するときに使用する Redshift 分散スタイル。有効なオプションは、EVEN、KEY、または ALL です。KEY を使用する場合は、distkey オプションを使用して分散キーも設定する必要があります。
distkey いいえ (DISTSTYLE_KEY を使用する場合を除き) 該当なし テーブル作成時に分散キーとして使用するテーブルの列の名前。
sortkeyspec いいえ 該当なし 完全な Redshift ソートキーの定義。
include_column_list いいえ False このライブラリがスキーマから列を自動的に抽出し、列のマッピングオプションに従って COPY コマンドに追加するかどうかを示します。
description いいえ 該当なし テーブルの説明。説明は SQL COMMENT コマンドで設定され、ほとんどのクエリツールに表示されます。個々の列の説明を設定するには、description メタデータを参照してください。
preactions いいえ 該当なし COPY コマンドをロードする前に実行する SQL コマンドのセミコロン区切りリスト。新しいデータをロードする前に DELETE コマンドなどを実行すると便利な場合があります。コマンドに %s が含まれている場合、テーブル名は実行前にフォーマットされます (ステージングテーブルを使用している場合)。このコマンドが失敗した場合、例外として処理されます。ステージングテーブルを使用している場合、preactions が失敗した場合は変更が元に戻され、バックアップテーブルが復元されます。
extracopyoptions いいえ 該当なし

データをロードするときに Redshift COPY コマンドに追加する追加オプションのリスト (TRUNCATECOLUMNSMAXERROR n など)。使用可能なパラメータの詳細なリストについては、「任意指定のパラメータ」を参照してください。

これらのオプションは COPY コマンドの最後に追加されるため、コマンドの最後で意味のあるオプションのみ使用できることに注意してください。これでほとんどのユースケースがカバーされるはずです。

sse_kms_key いいえ 該当なし AWS デフォルトの暗号化ではなく、Redshift UNLOAD オペレーションに S3 でサーバー側の暗号化に使用する AWS KMS キー ID。Redshift IAM ロールには、KMS キーを使用して書き込みを行うために KMS キーへのアクセス権が必要です。Spark IAM ロールには、読み取りオペレーションのためにキーへのアクセス権が必要です。Spark の IAM ロールが適切なアクセス権を持っている限り、暗号化されたデータの読み取りに変更は必要ありません (AWS がこれを処理します)。
tempformat いいえ AVRO Redshift に書き込むときに Amazon S3 に一時ファイルを保存する形式です。有効な値は AVRO、CSV、および CSV GZIP (圧縮 CSV) です。
csvnullstring (実験的) いいえ Null CSV tempformat を使用するときに null に書き込む文字列値。これは、実際のデータには表示されない値である必要があります。
autopushdown いいえ SQL オペレーションの Spark 論理プランをキャプチャして分析することにより、述語とクエリのプッシュダウンを適用するかどうかを示します。オペレーションは SQL クエリに変換され、Redshift で実行されてパフォーマンスが向上します。
autopushdown.s3_result_cache いいえ False クエリ SQL をキャッシュしてデータの Amazon S3 パスマッピングをメモリにアンロードします。これにより、同じクエリを同じ Spark セッションで再度実行する必要がなくなります。autopushdown がオンになっている場合にのみサポートされます。キャッシュされた結果には古い情報が含まれている可能性があるため、読み取りオペレーションと書き込みオペレーションを混在させる場合は、このパラメータを使用しないことをお勧めします。
unload_s3_format いいえ Parquet クエリ結果をアンロードする形式。有効なオプションは Parquet と Text で、クエリ結果をパイプで区切られたテキスト形式でアンロードするように指定します。
extraunloadoptions いいえ 該当なし Redshift の UNLOAD コマンドに追加する追加オプション。一部のオプションはコネクタ内で設定された他のオプションと競合する場合があるため、すべてのオプションの動作が保証されているわけではありません。
copydelay いいえ 30000 Redshift COPY オペレーションの再試行間の遅延 (ミリ秒単位)。
copyretrycount いいえ 2 Redshift COPY オペレーションを再試行する回数。
tempdir_region いいえ 該当なし

tempdir が所在する AWS リージョン。このオプションを設定すると、tempdir とのやり取りにおけるコネクタのパフォーマンスが向上します。また、コネクタの読み取りおよび書き込みオペレーション中に COPY および UNLOAD オペレーションの一部としてこの値が自動的に指定されます。

この設定は以下の状況にあるときに推奨されます。

1) コネクタが AWS の外部で実行されているときに、自動リージョン検出が失敗して、コネクタのパフォーマンスに悪影響を及ぶ場合。

2) tempdir が、Redshift クラスターとは異なるリージョンにある場合、この設定を使用すると、extracopyoptions および extraunloadoptions パラメータを使用してリージョンを手動で指定する必要が軽減されます。PARQUETtempformat として使用する場合、このパラメータを使用しても、tempdir を Redshift クラスターとは異なるリージョンに配置することはできません。

3) コネクタが tempdir とは異なるリージョンで実行されている場合、tempdir のコネクタのアクセスパフォーマンスが向上する場合。

secret.id いいえ 該当なし AWS Secrets Manager に保存されているシークレットの名前または ARN。このパラメータを使用して Redshift 認証情報を自動的に提供できますが、これが可能なのは、ユーザー、パスワード、および DbUser 認証情報が JDBC URL に渡されない、または他のオプションとして渡されない場合のみです。
secret.region いいえ 該当なし

secret.id の値を検索するプライマリ AWS リージョン (米国東部 (バージニア北部) など)。

このリージョンを指定しない場合、コネクタはデフォルトの認証情報プロバイダーチェーンを使用して、secret.id のリージョン解決を試みます。場合によっては (コネクタをコネクタ外部で使用している場合など)、コネクタがリージョンを検出できないことがあります。以下の状況では、この設定を使用することをお勧めします。

1) コネクタが AWS 外部で動作している場合、自動リージョン検出は失敗し、Redshift による認証はできなくなります

コネクタが secret.id とは異なるリージョンで実行されている場合 (これにより、シークレットに対するコネクタのアクセスパフォーマンスが向上します)。

secret.vpcEndpointUrl いいえ 該当なし デフォルトの認証情報プロバイダーチェーンを上書きするときの、AWS Secrets Manager の PrivateLink DNS エンドポイント URL。
secret.vpcEndpointRegion いいえ 該当なし デフォルトの認証情報プロバイダーチェーンを上書きするときの、AWS Secrets Manager の PrivateLink DNS エンドポイント リージョン。
jdbc.* いいえ 該当なし 基盤となる JDBC ドライバーに渡す追加のパラメータ。ここで、ワイルドカードは JDBC パラメータの名前です (jdbc.ssl など)。jdbc プレフィックスは JDBC ドライバーに渡される前に削除されることに注意してください。Redshift JDBC ドライバーで使用できるすべてのオプションを確認するには、「JDBC ドライバーバージョン 2.1 の設定オプション」を参照してください。
ラベル いいえ " " コネクタでクエリを実行するときにクエリグループセットに含める識別子。100 文字以下で、すべての文字が有効な unicodeIdentifierParts である必要があります。ID が 100 文字を超える場合、超過分は削除されます。コネクタを使用してクエリを実行すると、クエリグループは次のような JSON 形式の文字列として設定されます
{"spark-redshift-connector":{"svc":"","ver":"5.1.0-amzn-1-spark_3.3","op":"Read","lbl":""}}`)
。このオプションは lbl キーの値に置き換わります。
注記

謝辞: このドキュメントには、Apache 2.0 ライセンスの下でライセンス提供された Apache Software Foundation によって開発されたサンプルコードと説明が含まれています。