Opsi konfigurasi lainnya - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai 1 November 2025. Jika Anda ingin menggunakan Python UDFs, buat UDFs sebelum tanggal tersebut. Python yang ada UDFs akan terus berfungsi seperti biasa. Untuk informasi lebih lanjut, lihat posting blog.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Opsi konfigurasi lainnya

Di halaman ini, Anda dapat menemukan deskripsi untuk opsi yang dapat Anda tentukan untuk konektor Amazon Redshift Spark.

Ukuran maksimum kolom string

Redshift membuat kolom string sebagai kolom teks saat membuat tabel, yang disimpan sebagai VARCHAR (256). Jika Anda menginginkan kolom yang mendukung ukuran yang lebih besar, Anda dapat menggunakan maxlength untuk menentukan panjang maksimum kolom string. Berikut ini adalah contoh cara menentukanmaxlength.

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

Jenis kolom

Untuk mengatur jenis kolom, gunakan redshift_type bidang.

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

Pengkodean kompresi pada kolom

Untuk menggunakan pengkodean kompresi tertentu pada kolom, gunakan bidang pengkodean. Untuk daftar lengkap penyandian kompresi dukungan, lihat Pengkodean kompresi.

Deskripsi untuk kolom

Untuk mengatur deskripsi, gunakan description bidang.

Otentikasi antara Redshift dan Amazon S3

Secara default, hasilnya diturunkan ke Amazon S3 dalam format parket. Untuk membongkar hasilnya sebagai file teks yang dibatasi pipa, tentukan opsi berikut.

.option("unload_s3_format", "TEXT")

Pernyataan pushdown

Parameter Diperlukan Default Deskripsi
spark.datasource.redshift.community.autoPushdown.lazyMode Tidak True

Menentukan apakah konektor harus malas menjalankan pernyataan pushdown Redshift.

Jika benar, konektor percikan mengambil semua model dan informasi terkait sebelum menjalankan kueri, yang umumnya menghasilkan kinerja yang lebih baik.

Jika salah, konektor percikan menjalankan pernyataan pushdown segera di utas driver Spark utama dan diserialisasikan di seluruh ekspresi.

Parameter konektor

Peta parameter atau OPTIONS di Spark SQL mendukung pengaturan berikut.

Parameter Diperlukan Default Deskripsi
dbtable Ya, kecuali kueri ditentukan N/A Tabel untuk membuat atau membaca dari Redshift. Parameter ini diperlukan saat menyimpan data kembali ke Redshift.
kueri Ya, kecuali dbtable ditentukan N/A Kueri untuk dibaca di Redshift.
user Tidak N/A Nama pengguna Redshift. Harus digunakan dengan parameter kata sandi. Hanya berlaku jika pengguna dan kata sandi bukan parameter dalam URL. Menggunakan keduanya akan menyebabkan kesalahan.
password Tidak N/A Kata sandi Redshift. Harus digunakan dengan parameter pengguna. Hanya berlaku jika pengguna dan kata sandi bukan parameter dalam URL. Menggunakan keduanya akan menyebabkan kesalahan.
url Tidak N/A

URL JDBC. Formatnya adalah jdbc:subprotocol: //host:port/database? user=username&password=password.

Subprotokol dapat berupa postgresql atau Redshift, tergantung pada driver JDBC mana yang telah Anda muat. Perhatikan bahwa satu driver yang kompatibel dengan Redshift harus berada di classpath dan cocok dengan URL ini.

Host dan port harus mengarah ke node master Redshift, jadi Anda harus mengonfigurasi grup keamanan and/or VPC untuk mengizinkan akses dari aplikasi driver Anda.

Database adalah nama database Redshift.

Pengguna dan kata sandi adalah kredensil untuk mengakses database, yang harus disematkan dalam URL ini untuk JDBC, dan pengguna database harus memiliki izin yang diperlukan untuk mengakses tabel.

aws_iam_role Hanya jika menggunakan peran IAM untuk mengotorisasi operasi Redshift COPY/UNLOAD N/A ARN yang ditentukan sepenuhnya dari Peran IAM yang melekat pada cluster Redshift.
forward_spark_s3_credentials Tidak False Menunjukkan apakah pustaka ini akan secara otomatis menemukan kredensil yang digunakan Spark untuk terhubung ke Amazon S3, dan apakah akan meneruskan kredensialnya ke Redshift melalui driver JDBC. Kredensi ini dikirim sebagai bagian dari kueri JDBC. Oleh karena itu kami menyarankan Anda mengaktifkan enkripsi SSL dengan koneksi JDBC saat menggunakan opsi ini.
temporary_aws_access_key_id Tidak N/A AWS kunci akses. Harus memiliki izin menulis ke bucket S3.
temporary_aws_secret_access_key Tidak N/A AWS kunci akses rahasia yang sesuai dengan kunci akses.
temporary_aws_session_token Tidak N/A AWS token sesi sesuai dengan kunci akses yang disediakan.
tempdir Tidak N/A Lokasi yang dapat ditulis di Amazon S3. Digunakan untuk membongkar data saat membaca dan data Avro untuk dimuat ke Redshift saat menulis. Jika Anda menggunakan sumber data Redshift untuk Spark sebagai bagian dari pipeline ETL biasa, akan berguna untuk menyetel kebijakan siklus hidup pada bucket dan menggunakannya sebagai lokasi sementara untuk data ini.
jdbcdriver Tidak Ditentukan oleh subprotokol URL JDBC Nama kelas driver JDBC yang akan digunakan. Kelas ini harus berada di classpath. Dalam kebanyakan kasus, tidak perlu menentukan opsi ini, karena nama kelas driver yang sesuai harus secara otomatis ditentukan oleh subprotokol URL JDBC.
diststyle Tidak Bahkan Gaya Distribusi Redshift untuk digunakan saat membuat tabel. Opsi yang valid adalah EVEN, KEY atau ALL. Saat menggunakan KEY, Anda juga harus mengatur kunci distribusi dengan opsi distkey.
distkey Tidak, kecuali menggunakan DISTYLE_KEY N/A Nama kolom dalam tabel untuk digunakan sebagai kunci distribusi saat membuat tabel.
sortkeyspec Tidak N/A Sebuah definisi Redshift Sort Key lengkap.
include_column_list Tidak False Menunjukkan apakah pustaka ini harus secara otomatis mengekstrak kolom dari skema dan menambahkannya ke perintah COPY sesuai dengan opsi pemetaan Kolom.
deskripsi Tidak N/A Deskripsi untuk tabel. Deskripsi diatur dengan perintah SQL COMMENT, dan muncul di sebagian besar alat kueri. Lihat description metadata untuk mengatur deskripsi pada kolom individual.
preaksi Tidak N/A Sebuah daftar perintah SQL yang dibatasi titik koma untuk dijalankan sebelum memuat perintah COPY. Mungkin berguna untuk menjalankan perintah DELETE atau serupa sebelum memuat data baru. Jika perintah berisi %s, nama tabel akan diformat sebelum runtime (jika Anda menggunakan tabel pementasan). Jika perintah ini gagal, itu diperlakukan sebagai pengecualian. Jika Anda menggunakan tabel pementasan, perubahan akan dikembalikan dan mengembalikan tabel cadangan jika preaksi gagal.
ekstrakoopiopsi Tidak N/A

Daftar opsi tambahan untuk ditambahkan ke perintah Redshift COPY saat memuat data (TRUNCATECOLUMNSseperti MAXERROR n atau). Lihat Parameter opsional untuk daftar lengkap parameter yang tersedia.

Perhatikan bahwa karena opsi ini ditambahkan ke akhir COPY perintah, Anda hanya dapat menggunakan opsi yang masuk akal di akhir perintah. Itu harus mencakup sebagian besar kasus penggunaan yang mungkin.

sse_kms_key Tidak N/A ID AWS KMS kunci yang digunakan untuk enkripsi sisi server di S3 selama operasi Redshift UNLOAD daripada enkripsi default. AWS Peran IAM Redshift harus memiliki akses ke kunci KMS untuk menulis dengannya, dan peran IAM Spark harus memiliki akses ke kunci untuk operasi baca. Membaca data terenkripsi tidak memerlukan perubahan (AWS menangani ini) selama peran IAM Spark memiliki akses yang tepat.
tempformat Tidak AVRO Format untuk menyimpan file sementara di Amazon S3 saat menulis ke Redshift. Nilai yang valid adalah AVRO, CSV, dan CSV GZIP (CSV terkompresi).
csvnullstring (eksperimental) Tidak Null Nilai string untuk menulis untuk nol saat menggunakan tempformat CSV. Ini harus menjadi nilai yang tidak muncul dalam data aktual Anda.
autopushdown Tidak True Menunjukkan apakah akan menerapkan predikat dan pushdown kueri dengan menangkap dan menganalisis rencana logis Spark untuk operasi SQL. Operasi diterjemahkan ke dalam kueri SQL dan kemudian dijalankan di Redshift untuk meningkatkan kinerja.
autopushdown.s3_result_cache Tidak False Cache SQL kueri untuk membongkar data pemetaan jalur Amazon S3 di memori, sehingga kueri yang sama tidak perlu dijalankan lagi dalam sesi Spark yang sama. Hanya didukung saat autopushdown dihidupkan. Kami tidak menyarankan menggunakan parameter ini saat mencampur operasi baca dan tulis karena hasil cache mungkin berisi informasi basi.
unload_s3_format Tidak Parquet Format yang digunakan untuk membongkar hasil kueri. Opsi yang valid adalah Parket dan Teks, yang menentukan untuk membongkar hasil kueri dalam format teks yang dibatasi pipa.
extraunloadoptions Tidak N/A Opsi tambahan untuk ditambahkan ke perintah Redshift UNLOAD. Tidak semua opsi dijamin berfungsi karena beberapa opsi mungkin bertentangan dengan opsi lain yang ditetapkan dalam konektor.
copydelay Tidak 30000 Penundaan (dalam ms) antara percobaan ulang untuk operasi Redshift COPY.
copyretrycount Tidak 2 Berapa kali untuk mencoba lagi operasi Redshift COPY.
tempdir_region Tidak N/A

AWS Wilayah di mana tempdir berada. Menyetel opsi ini meningkatkan kinerja konektor untuk interaksi dengan tempdir serta secara otomatis memberikan nilai ini sebagai bagian dari operasi COPY dan UNLOAD selama operasi baca dan tulis konektor.

Pengaturan ini direkomendasikan dalam situasi berikut:

1) Ketika konektor berjalan di luar AWS, karena penemuan Wilayah otomatis akan gagal dan berdampak negatif pada kinerja konektor.

2) Kapan tempdir berada di Wilayah yang berbeda dari cluster Redshift, karena menggunakan pengaturan ini mengurangi kebutuhan untuk memasok Wilayah secara manual menggunakan parameter dan. extracopyoptions extraunloadoptions tempdirtidak bisa berada di Wilayah yang berbeda dari cluster Redshift PARQUET saat menggunakan tempformat meskipun ini menggunakan parameter ini.

3) Ketika konektor berjalan di Wilayah yang berbeda daritempdir, karena meningkatkan kinerja akses konektortempdir.

secret.id Tidak N/A Nama atau ARN rahasia Anda disimpan di. AWS Secrets Manager Anda dapat menggunakan parameter ini untuk secara otomatis menyediakan kredenal Redshift, tetapi hanya jika pengguna, kata sandi, dan DbUser kredensialnya tidak diteruskan ke URL JDBC atau sebagai opsi lain.
secret.region Tidak N/A

AWS Wilayah utama, seperti US East (Virginia N.), untuk mencari secret.id nilai.

Jika Anda tidak menentukan Wilayah ini, konektor akan mencoba menggunakan rantai penyedia kredensi Default untuk menyelesaikan Wilayah. secret.id Dalam beberapa kasus, seperti jika Anda menggunakan konektor di luar konektor tidak akan dapat menemukan Wilayah. Sebaiknya gunakan pengaturan ini dalam situasi berikut:

1) Saat konektor berjalan di luar AWS, karena penemuan Wilayah otomatis akan gagal dan mencegah otentikasi dengan Redshift

Ketika konektor berjalan di Wilayah yang berbeda darisecret.id, karena meningkatkan kinerja akses konektor rahasia.

rahasia. vpcEndpointUrl Tidak N/A URL endpoint PrivateLink DNS untuk AWS Secrets Manager saat mengganti rantai penyedia kredensi Default.
rahasia. vpcEndpointRegion Tidak N/A Wilayah titik akhir PrivateLink DNS untuk AWS Secrets Manager saat mengganti rantai penyedia kredensi Default.
jdbc. * Tidak N/A Parameter tambahan untuk diteruskan ke driver JDBC yang mendasarinya di mana wildcard adalah nama parameter JDBC, seperti jdbc.ssl. Perhatikan bahwa jdbc awalan akan dihapus sebelum diteruskan ke driver JDBC. Untuk melihat semua opsi yang mungkin untuk driver Redshift JDBC, lihat Opsi untuk konfigurasi driver JDBC versi 2.x.
label Tidak " " Pengidentifikasi untuk disertakan dalam kumpulan kueri yang disetel saat menjalankan kueri dengan konektor. Harus 100 atau kurang karakter, dan semua karakter harus validunicodeIdentifierParts. Jika pengenal Anda memiliki lebih dari 100 karakter, kelebihannya akan dihapus. Saat menjalankan kueri dengan konektor, grup kueri akan ditetapkan sebagai string format JSON, seperti
{"spark-redshift-connector":{"svc":"","ver":"5.1.0-amzn-1-spark_3.3","op":"Read","lbl":""}}`)
. Opsi ini menggantikan nilai lbl kunci.
catatan

Pengakuan: Dokumentasi ini berisi kode contoh dan bahasa yang dikembangkan oleh Apache Software Foundation yang dilisensikan di bawah lisensi Apache 2.0.