Opsi konfigurasi lainnya - Amazon Redshift

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

Tipe 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. Berlaku hanya jika pengguna dan kata sandi bukan parameter dalamURL. Menggunakan keduanya akan menyebabkan kesalahan.
password Tidak N/A Kata sandi Redshift. Harus digunakan dengan parameter pengguna. Berlaku hanya jika pengguna dan kata sandi bukan parameter dalamURL. Menggunakan keduanya akan menyebabkan kesalahan.
url Tidak N/A

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

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

Host dan port harus menunjuk ke node master Redshift, jadi Anda harus mengkonfigurasi grup keamanan dan/atau 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 hal ini URL untukJDBC, dan pengguna database harus memiliki izin yang diperlukan untuk mengakses tabel.

aws_iam_role Hanya jika menggunakan IAM peran untuk mengotorisasi COPY Redshift/operasi UNLOAD N/A Sepenuhnya ditentukan ARN dari IAM Peran yang dilampirkan ke 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 Kredensyal ini dikirim sebagai bagian dari kueri. JDBC Oleh karena itu kami sarankan Anda mengaktifkan SSL enkripsi dengan JDBC koneksi 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 ETL pipeline reguler, akan berguna untuk menetapkan kebijakan siklus hidup pada bucket dan menggunakannya sebagai lokasi sementara untuk data ini.
jdbcdriver Tidak Ditentukan oleh JDBC URL subprotokol Nama kelas JDBC pengemudi yang akan digunakan. Kelas ini harus berada di classpath. Dalam kebanyakan kasus, seharusnya tidak perlu menentukan opsi ini, karena nama kelas driver yang sesuai harus secara otomatis ditentukan oleh JDBC URL subprotokol.
diststyle Tidak Bahkan Gaya Distribusi Redshift untuk digunakan saat membuat tabel. Opsi yang valid adalahEVEN, KEY atauALL. Saat menggunakanKEY, Anda juga harus mengatur kunci distribusi dengan opsi distkey.
distkey Tidak, kecuali menggunakan DISTSTYLE _ 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 COPY perintah sesuai dengan opsi pemetaan Kolom.
deskripsi Tidak N/A Deskripsi untuk tabel. Deskripsi diatur dengan SQL COMMENT perintah, dan muncul di sebagian besar alat kueri. Lihat description metadata untuk mengatur deskripsi pada kolom individual.
preaksi Tidak N/A Sebuah daftar perintah yang dibatasi titik koma untuk dijalankan sebelum memuat SQL perintah. COPY Mungkin berguna untuk menjalankan DELETE perintah 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 COPY Redshift 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 UNLOAD operasi Redshift daripada enkripsi default. AWS IAMPeran Redshift harus memiliki akses ke KMS kunci untuk menulis dengannya, dan IAM peran Spark harus memiliki akses ke kunci untuk operasi baca. Membaca data terenkripsi tidak memerlukan perubahan (AWS menangani ini) selama IAM peran Spark memiliki akses yang tepat.
tempformat Tidak AVRO Format untuk menyimpan file sementara di Amazon S3 saat menulis ke Redshift. Nilai yang valid adalahAVRO,CSV, dan CSV GZIP (dikompresiCSV).
csvnullstring (eksperimental) Tidak Null Nilai string untuk menulis untuk nulls saat menggunakan tempformat. CSV Ini harus menjadi nilai yang tidak muncul dalam data aktual Anda.
autopushdown Tidak True Menunjukkan apakah akan menerapkan predikat dan permintaan pushdown dengan menangkap dan menganalisis rencana logis Spark untuk operasi. SQL Operasi diterjemahkan ke dalam SQL kueri dan kemudian dijalankan di Redshift untuk meningkatkan kinerja.
autopushdown.s3_result_cache Tidak False Cache kueri SQL untuk membongkar data pemetaan jalur Amazon S3 di memori, sehingga kueri yang sama tidak perlu dijalankan lagi di 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 UNLOADRedshift. 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 COPY Redshift.
copyretrycount Tidak 2 Berapa kali untuk mencoba lagi operasi COPY Redshift.
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 COPY dan UNLOAD operasi 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.

rahasia.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 atau sebagai opsi lain. JDBC URL
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 PrivateLink DNSTitik akhir URL untuk AWS Secrets Manager saat mengganti rantai penyedia kredensi Default.
rahasia. vpcEndpointRegion Tidak N/A Wilayah PrivateLink DNS titik akhir untuk AWS Secrets Manager saat mengganti rantai penyedia kredensi Default.
jdbc. * Tidak N/A Parameter tambahan untuk diteruskan ke JDBC driver yang mendasarinya di mana wildcard adalah nama JDBC parameter, seperti jdbc.ssl. Perhatikan bahwa jdbc awalan akan dihapus sebelum diteruskan ke JDBC driver. Untuk melihat semua opsi yang mungkin untuk JDBC driver Redshift, lihat Opsi untuk konfigurasi JDBC driver versi 2.1.
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 JSON format, 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.