

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# その他の設定オプション
<a name="spark-redshift-connector-other-config"></a>

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

## 文字列列の最大サイズ
<a name="spark-redshift-connector-other-config-max-size"></a>

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))
}
```

## 列のタイプ
<a name="spark-redshift-connector-other-config-column-type"></a>

列タイプを設定するには、`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))
}
```

## 列の圧縮エンコード
<a name="spark-redshift-connector-other-config-compression-encoding"></a>

 列に特定の圧縮エンコードを使用するには、エンコードフィールドを使用します。サポートされている圧縮エンコードの詳細なリストについては、「[圧縮エンコード](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)」を参照してください。

## 列の説明
<a name="spark-redshift-connector-other-config-description"></a>

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

## Redshift と Amazon S3 間の認証
<a name="spark-redshift-connector-other-config-unload-as-text"></a>

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

```
.option("unload_s3_format", "TEXT")
```

## プッシュダウンステートメント
<a name="spark-redshift-connector-other-config-lazy-pushdown"></a>


| [Parameter] (パラメータ) | 必須  | デフォルト | 説明  | 
| --- | --- | --- | --- | 
| spark.datasource.redshift.community.autopushdown.lazyMode | なし | 正 | コネクタがプッシュダウンステートメント Redshift を遅延実行するかどうかを指定します。<br />true の場合、Spark コネクタはクエリを実行する前に関連するモデルと情報をすべて取得するため、一般的にパフォーマンスが向上します。<br />false の場合、Spark コネクタはメインの Spark ドライバースレッドでプッシュダウンステートメントを直ちに実行し、式間でシリアル化されます。 | 

## コネクタパラメータ
<a name="spark-redshift-connector-other-config-spark-parameters"></a>

パラメータマップまたは 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 です。<br />subprotocol は、ロードした JDBC ドライバーに応じて、postgresql または Redshift にすることができます。1 つの Redshift 互換ドライバーがクラスパスに含まれていて、この URL と一致する必要があることに注意してください。<br /> ホストとポートは Redshift マスターノードを指す必要があるため、ドライバーアプリケーションからのアクセスを許可するようにセキュリティグループや VPC を設定する必要があります。<br /> database は Redshift のデータベース名です。<br /> user および password はデータベースにアクセスするための認証情報で、この JDBC の URL に埋め込む必要があります。また、データベースユーザーにはテーブルにアクセスするための許可が必要です。 | 
| aws\_iam\_role | IAM ロールを使用して Redshift の COPY/UNLOAD オペレーションを許可する場合のみ | 該当なし | Redshift クラスターにアタッチされた IAM ロールの完全に指定された ARN。 | 
| forward\_spark\_s3\_credentials | いいえ | 誤 | 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 データソースを使用している場合は、バケットに[ライフサイクルポリシー](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)を設定して、それをこのデータの一時的な場所として使用すると便利です。 | 
| jdbcdriver | いいえ | JDBC URL のサブプロトコルによって決定されます | 使用する JDBC ドライバーのクラス名。このクラスはクラスパス上にある必要があります。ほとんどの場合、適切なドライバークラス名は JDBC URL のサブプロトコルによって自動的に決定されるため、このオプションを指定する必要はありません。 | 
| diststyle | いいえ | Even | テーブルを作成するときに使用する Redshift [分散スタイル](https://docs.aws.amazon.com/redshift/latest/dg/c_choosing_dist_sort.html)。有効なオプションは、EVEN、KEY、または ALL です。KEY を使用する場合は、distkey オプションを使用して分散キーも設定する必要があります。 | 
| distkey | いいえ (DISTSTYLE\_KEY を使用する場合を除き) | 該当なし | テーブル作成時に分散キーとして使用するテーブルの列の名前。 | 
| sortkeyspec | いいえ | 該当なし | 完全な Redshift [ソートキー](https://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html)の定義。 | 
| include\_column\_list | いいえ | 誤 | このライブラリがスキーマから列を自動的に抽出し、[列のマッピングオプション](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-column-mapping.html)に従って COPY コマンドに追加するかどうかを示します。 | 
| description | いいえ | 該当なし | テーブルの説明。説明は SQL COMMENT コマンドで設定され、ほとんどのクエリツールに表示されます。個々の列の説明を設定するには、description メタデータを参照してください。 | 
| preactions | いいえ | 該当なし | COPY コマンドをロードする前に実行する SQL コマンドのセミコロン区切りリスト。新しいデータをロードする前に DELETE コマンドなどを実行すると便利な場合があります。コマンドに %s が含まれている場合、テーブル名は実行前にフォーマットされます (ステージングテーブルを使用している場合)。このコマンドが失敗した場合、例外として処理されます。ステージングテーブルを使用している場合、preactions が失敗した場合は変更が元に戻され、バックアップテーブルが復元されます。 | 
| extracopyoptions | いいえ | 該当なし | データをロードするときに Redshift COPY コマンドに追加する追加オプションのリスト (`TRUNCATECOLUMNS` や `MAXERROR n` など)。使用可能なパラメータの詳細なリストについては、「[任意指定のパラメータ](https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html#r_COPY-syntax-overview-optional-parameters)」を参照してください。<br />これらのオプションは `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)、および PARQUET です。 | 
| csvnullstring (実験的) | いいえ | Null |  CSV tempformat を使用するときに null に書き込む文字列値。これは、実際のデータには表示されない値である必要があります。 | 
| autopushdown | なし | 正 | SQL オペレーションの Spark 論理プランをキャプチャして分析することにより、述語とクエリのプッシュダウンを適用するかどうかを示します。オペレーションは SQL クエリに変換され、Redshift で実行されてパフォーマンスが向上します。 | 
| autopushdown.s3\_result\_cache | いいえ | 誤 | クエリ SQL をキャッシュしてデータの Amazon S3 パスマッピングをメモリにアンロードします。これにより、同じクエリを同じ Spark セッションで再度実行する必要がなくなります。autopushdown がオンになっている場合にのみサポートされます。キャッシュされた結果には古い情報が含まれている可能性があるため、読み取りオペレーションと書き込みオペレーションを混在させる場合は、このパラメータを使用しないことをお勧めします。 | 
| unload\_s3\_format | いいえ | Parquet | クエリ結果をアンロードする形式。有効なオプションは Parquet と Text で、クエリ結果をパイプで区切られたテキスト形式でアンロードするように指定します。 | 
| extraunloadoptions | いいえ | 該当なし | Redshift の [UNLOAD](https://docs.aws.amazon.com/redshift/latest/dg/r_UNLOAD.html) コマンドに追加する追加オプション。一部のオプションはコネクタ内で設定された他のオプションと競合する場合があるため、すべてのオプションの動作が保証されているわけではありません。 | 
| copydelay | いいえ | 30000 | Redshift COPY オペレーションの再試行間の遅延 (ミリ秒単位)。 | 
| copyretrycount | いいえ | 2 | Redshift COPY オペレーションを再試行する回数。 | 
| tempdir\_region | いいえ | 該当なし | `tempdir` が所在する AWS リージョン。このオプションを設定すると、`tempdir` とのやり取りにおけるコネクタのパフォーマンスが向上します。また、コネクタの読み取りおよび書き込みオペレーション中に COPY および UNLOAD オペレーションの一部としてこの値が自動的に指定されます。<br /> この設定は以下の状況にあるときに推奨されます。<br />1) コネクタが AWS の外部で実行されているときに、自動リージョン検出が失敗して、コネクタのパフォーマンスに悪影響を及ぶ場合。<br />2) `tempdir` が、Redshift クラスターとは異なるリージョンにある場合、この設定を使用すると、`extracopyoptions` および `extraunloadoptions` パラメータを使用してリージョンを手動で指定する必要が軽減されます。`PARQUET` を `tempformat` として使用する場合、このパラメータを使用しても、`tempdir` を Redshift クラスターとは異なるリージョンに配置することはできません。<br /> 3) コネクタが `tempdir` とは異なるリージョンで実行されている場合、`tempdir` のコネクタのアクセスパフォーマンスが向上する場合。 | 
| secret.id | いいえ | 該当なし | AWS Secrets Manager に保存されているシークレットの名前または ARN。このパラメータを使用して Redshift 認証情報を自動的に提供できますが、これが可能なのは、ユーザー、パスワード、および DbUser 認証情報が JDBC URL に渡されない、または他のオプションとして渡されない場合のみです。 | 
| secret.region | いいえ | 該当なし | `secret.id` の値を検索するプライマリ AWS リージョン (米国東部 (バージニア北部) など)。<br />このリージョンを指定しない場合、コネクタは[デフォルトの認証情報プロバイダーチェーン](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)を使用して、`secret.id` のリージョン解決を試みます。場合によっては (コネクタをコネクタ外部で使用している場合など)、コネクタがリージョンを検出できないことがあります。以下の状況では、この設定を使用することをお勧めします。<br />1) コネクタが AWS 外部で動作している場合、自動リージョン検出は失敗し、Redshift による認証はできなくなります<br />コネクタが `secret.id` とは異なるリージョンで実行されている場合 (これにより、シークレットに対するコネクタのアクセスパフォーマンスが向上します)。 | 
| secret.vpcEndpointUrl | いいえ | 該当なし | [デフォルトの認証情報プロバイダーチェーン](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)を上書きするときの、AWS Secrets Manager の PrivateLink DNS エンドポイント URL。 | 
| secret.vpcEndpointRegion | いいえ | 該当なし | [デフォルトの認証情報プロバイダーチェーン](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html)を上書きするときの、AWS Secrets Manager の PrivateLink DNS エンドポイント リージョン。 | 
| jdbc.\* | いいえ | 該当なし | 基盤となる JDBC ドライバーに渡す追加のパラメータ。ここで、ワイルドカードは JDBC パラメータの名前です (jdbc.ssl など)。jdbc プレフィックスは JDBC ドライバーに渡される前に削除されることに注意してください。Redshift JDBC ドライバーで使用できるすべてのオプションを確認するには、「[JDBC ドライバーバージョン 2.x の設定オプション](https://docs.aws.amazon.com/redshift/latest/mgmt/jdbc20-configuration-options.html)」を参照してください。 | 
| ラベル | いいえ | " " | コネクタでクエリを実行するときにクエリグループセットに含める識別子。100 文字以下で、すべての文字が有効な unicodeIdentifierParts である必要があります。ID が 100 文字を超える場合、超過分は削除されます。コネクタを使用してクエリを実行すると、クエリグループは次のような JSON 形式の文字列として設定されます <pre>{"spark-redshift-connector":{"svc":"","ver":"5.1.0-amzn-1-spark_3.3","op":"Read","lbl":""}}`)</pre>。このオプションは lbl キーの値に置き換わります。 | 

**注記**  
 謝辞: このドキュメントには、[Apache 2.0 ライセンス](https://www.apache.org/licenses/LICENSE-2.0)の下でライセンス提供された [Apache Software Foundation](http://www.apache.org/) によって開発されたサンプルコードと説明が含まれています。