Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Koneksi Redshift
Anda dapat menggunakan AWS Glue for Spark untuk membaca dan menulis ke tabel di database Amazon Redshift. Saat menghubungkan ke database Amazon Redshift, AWS Glue memindahkan data melalui Amazon S3 untuk mencapai throughput maksimum, menggunakan Amazon Redshift dan perintah. SQL COPY
UNLOAD
Di AWS Glue 4.0 dan yang lebih baru, Anda dapat menggunakan integrasi Amazon Redshift untuk Apache Spark untuk membaca dan menulis dengan pengoptimalan dan fitur khusus untuk Amazon Redshift di luar yang tersedia saat menghubungkan melalui versi sebelumnya.
Pelajari tentang bagaimana AWS Glue mempermudah pengguna Amazon Redshift untuk bermigrasi ke AWS Glue untuk integrasi data tanpa server dan. ETL
Mengkonfigurasi koneksi Redshift
Untuk menggunakan cluster Amazon Redshift di AWS Glue, Anda memerlukan beberapa prasyarat:
-
Direktori Amazon S3 untuk digunakan untuk penyimpanan sementara saat membaca dari dan menulis ke database.
-
Amazon yang VPC memungkinkan komunikasi antara cluster Amazon Redshift Anda, pekerjaan AWS Glue Anda, dan direktori Amazon S3 Anda.
-
IAMIzin yang sesuai pada pekerjaan AWS Glue dan klaster Amazon Redshift.
Mengkonfigurasi peran IAM
Siapkan peran untuk cluster Amazon Redshift
Cluster Amazon Redshift Anda harus dapat membaca dan menulis ke Amazon S3 agar dapat berintegrasi dengan AWS pekerjaan Glue. Untuk mengizinkannya, Anda dapat mengaitkan IAM peran dengan klaster Amazon Redshift yang ingin Anda sambungkan. Peran Anda harus memiliki kebijakan yang mengizinkan baca dari dan tulis ke direktori sementara Amazon S3 Anda. Peran Anda harus memiliki hubungan kepercayaan yang memungkinkan redshift.amazonaws.com
layanan untukAssumeRole
.
Untuk mengaitkan IAM peran dengan Amazon Redshift
Prasyarat: Bucket atau direktori Amazon S3 yang digunakan untuk penyimpanan sementara file.
-
Identifikasi izin Amazon S3 mana yang dibutuhkan cluster Amazon Redshift Anda. Saat memindahkan data ke dan dari klaster Amazon Redshift, AWS Glue jobs mengeluarkan COPY dan UNLOAD pernyataan terhadap Amazon Redshift. Jika pekerjaan Anda memodifikasi tabel di Amazon Redshift, AWS Glue juga CREATE LIBRARY akan mengeluarkan pernyataan. Untuk informasi tentang izin Amazon S3 tertentu yang diperlukan Amazon Redshift untuk menjalankan pernyataan ini, lihat dokumentasi Amazon Redshift: Amazon Redshift: Izin untuk mengakses Sumber Daya lainnya. AWS
Di IAM konsol, buat IAM kebijakan dengan izin yang diperlukan. Untuk informasi selengkapnya tentang membuat kebijakan Membuat IAM kebijakan.
Di IAM konsol, buat hubungan peran dan kepercayaan yang memungkinkan Amazon Redshift untuk mengambil peran tersebut. Ikuti petunjuk dalam IAM dokumentasi Untuk membuat peran untuk AWS layanan (konsol)
Ketika diminta untuk memilih kasus penggunaan AWS layanan, pilih “Redshift - Customizable”.
Saat diminta untuk melampirkan kebijakan, pilih kebijakan yang telah Anda tetapkan sebelumnya.
catatan
Untuk informasi selengkapnya tentang mengonfigurasi peran untuk Amazon Redshift, lihat Mengotorisasi Amazon Redshift untuk AWS mengakses layanan lain atas nama Anda dalam dokumentasi Amazon Redshift.
Di konsol Amazon Redshift, kaitkan peran tersebut dengan cluster Amazon Redshift Anda. Ikuti petunjuk dalam dokumentasi Amazon Redshift.
Pilih opsi yang disorot di konsol Amazon Redshift untuk mengonfigurasi pengaturan ini:
catatan
Secara default, pekerjaan AWS Glue meneruskan kredenal sementara Amazon Redshift yang dibuat menggunakan peran yang Anda tentukan untuk menjalankan pekerjaan. Kami tidak menyarankan menggunakan kredensil ini. Untuk tujuan keamanan, kredensyal ini kedaluwarsa setelah 1 jam.
Siapkan peran untuk pekerjaan AWS Glue
Pekerjaan AWS Glue membutuhkan peran untuk mengakses bucket Amazon S3. Anda tidak memerlukan IAM izin untuk klaster Amazon Redshift, akses Anda dikendalikan oleh konektivitas di VPC Amazon dan kredenal database Anda.
Siapkan Amazon VPC
Untuk menyiapkan akses untuk penyimpanan data Amazon Redshift
Masuk ke AWS Management Console dan buka konsol Amazon Redshift di. https://console.aws.amazon.com/redshiftv2/
-
Di panel navigasi sebelah kiri, pilih Klaster.
-
Pilih nama klaster yang ingin Anda akses dari AWS Glue.
-
Di bagian Properti Cluster, pilih grup VPCkeamanan dalam grup keamanan AWS Glue untuk mengizinkan penggunaan. Catat nama grup keamanan yang Anda pilih untuk referensi di masa mendatang. Memilih grup keamanan membuka daftar Grup Keamanan EC2 konsol Amazon.
-
Memilih grup keamanan untuk memodifikasi dan menavigasi ke tab Inbound.
-
Tambahkan aturan self-referencing untuk mengizinkan komponen AWS Glue untuk berkomunikasi. Secara khusus, tambahkan atau konfirmasi bahwa ada aturan Jenis
All TCP
, Protokol adalahTCP
, Rentang Port mencakup semua port, dan yang Sumber adalah nama grup keamanan yang sama seperti ID Grup.Aturan inbound terlihat serupa dengan yang berikut ini:
Tipe Protokol Rentang port Sumber Semua TCP
TCP
0–65535
database-security-group
Sebagai contoh:
-
Menambahkan aturan untuk lalu lintas outbound juga. Baik dengan membuka lalu lintas outbound ke semua port, misalnya:
Tipe Protokol Rentang Port Tujuan Semua Lalu Lintas
ALL
ALL
0.0.0.0/0
Atau membuat aturan self-referencing di mana Jenis
All TCP
, Protokol adalahTCP
, Rentang Port mencakup semua port, dan yang Tujuan adalah nama grup keamanan yang sama seperti ID Grup. Jika menggunakan VPC titik akhir Amazon S3, tambahkan juga HTTPS aturan untuk akses Amazon S3. Bagians3-prefix-list-id
diperlukan dalam aturan grup keamanan untuk mengizinkan lalu lintas dari titik akhir Amazon S3 VPC VPC ke.Sebagai contoh:
Tipe Protokol Rentang Port Tujuan Semua TCP
TCP
0–65535
security-group
HTTPS
TCP
443
s3-prefix-list-id
Mengatur AWS Glue
Anda perlu membuat koneksi AWS Glue Data Catalog yang menyediakan informasi VPC koneksi Amazon.
Untuk mengonfigurasi VPC konektivitas Amazon Redshift Amazon ke AWS Glue di konsol
-
Buat koneksi Katalog Data dengan mengikuti langkah-langkah di:Menambahkan AWS Glue koneksi. Setelah membuat koneksi, pertahankan nama koneksi,
connectionName
, untuk langkah selanjutnya.Saat memilih jenis Koneksi, pilih Amazon Redshift.
Saat memilih klaster Redshift, pilih klaster Anda berdasarkan nama.
Berikan informasi koneksi default untuk pengguna Amazon Redshift di klaster Anda.
VPCPengaturan Amazon Anda akan dikonfigurasi secara otomatis.
catatan
Anda harus menyediakan Amazon Anda
PhysicalConnectionRequirements
secara manual VPC saat membuat koneksi Amazon Redshift melalui file. AWS SDK -
Dalam konfigurasi pekerjaan AWS Glue Anda, berikan
connectionName
sebagai koneksi jaringan tambahan.
Contoh: Membaca dari tabel Amazon Redshift
Anda dapat membaca dari cluster Amazon Redshift dan lingkungan tanpa server Amazon Redshift.
Prasyarat: Tabel Amazon Redshift yang ingin Anda baca. Ikuti langkah-langkah di bagian sebelumnya Mengkonfigurasi koneksi Redshift setelah itu Anda harus memiliki Amazon S3 URI untuk direktori sementara, temp-s3-dir
dan IAM peran, rs-role-name
, (dalam akun role-account-id
).
Contoh: Menulis ke tabel Amazon Redshift
Anda dapat menulis ke cluster Amazon Redshift dan lingkungan tanpa server Amazon Redshift.
Prasyarat: Cluster Amazon Redshift dan ikuti langkah-langkah di bagian sebelumnya Mengkonfigurasi koneksi Redshift setelah itu Anda harus memiliki Amazon S3 untuk direktori sementara, URI temp-s3-dir
dan IAM peran, rs-role-name
, (dalam akun role-account-id
). Anda juga akan membutuhkan konten DynamicFrame
yang ingin Anda tulis ke database.
Referensi opsi koneksi Amazon Redshift
Opsi koneksi dasar yang digunakan untuk semua JDBC koneksi AWS Glue untuk mengatur informasi sepertiurl
, user
dan password
konsisten di semua JDBC jenis. Untuk informasi selengkapnya tentang JDBC parameter standar, lihatReferensi opsi koneksi JDBC.
Jenis koneksi Amazon Redshift membutuhkan beberapa opsi koneksi tambahan:
-
"redshiftTmpDir"
: (Wajib) Jalur Amazon S3 tempat data sementara dapat dipentaskan saat menyalin dari database. -
"aws_iam_role"
: (Opsional) ARN untuk suatu IAM peran. Pekerjaan AWS Glue akan meneruskan peran ini ke klaster Amazon Redshift untuk memberikan izin klaster yang diperlukan untuk menyelesaikan instruksi dari pekerjaan tersebut.
Opsi koneksi tambahan tersedia di AWS Glue 4.0+
Anda juga dapat meneruskan opsi untuk konektor Amazon Redshift baru melalui opsi koneksi AWS Glue. Untuk daftar lengkap opsi konektor yang didukung, lihat bagian SQLParameter Spark di integrasi Amazon Redshift untuk Apache Spark.
Untuk kenyamanan Anda, kami mengulangi opsi baru tertentu di sini:
Nama | Diperlukan | Default | Deskripsi |
---|---|---|---|
autopushdown |
Tidak | TRUE | 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 Amazon Redshift untuk meningkatkan kinerja. |
autopushdown.s3_result_cache |
Tidak | FALSE | Cache SQL kueri untuk membongkar data untuk pemetaan jalur Amazon S3 di memori sehingga kueri yang sama tidak perlu dijalankan lagi dalam sesi Spark yang sama. Hanya didukung saat |
unload_s3_format |
Tidak | PARQUET | PARQUET- Membongkar hasil kueri dalam format Parket. TEXT- Membongkar hasil kueri dalam format teks yang dibatasi pipa. |
sse_kms_key |
Tidak | N/A | KMSKunci AWS SSE - untuk digunakan untuk enkripsi selama |
ekstrakoopiopsi |
Tidak | N/A | Daftar opsi tambahan untuk ditambahkan ke perintah Amazon Perhatikan bahwa karena opsi ini ditambahkan ke akhir |
csvnullstring (eksperimental) |
Tidak | NULL | Nilai String untuk menulis untuk nol saat menggunakan. CSV |
Parameter baru ini dapat digunakan dengan cara-cara berikut.
Opsi baru untuk peningkatan kinerja
Konektor baru memperkenalkan beberapa opsi peningkatan kinerja baru:
-
autopushdown
: Diaktifkan secara default. -
autopushdown.s3_result_cache
: Dinonaktifkan secara default. -
unload_s3_format
: secaraPARQUET
default.
Untuk informasi tentang penggunaan opsi ini, lihat Integrasi Amazon Redshift untuk Apache Spark. Kami menyarankan agar Anda tidak mengaktifkan
autopushdown.s3_result_cache
ketika Anda memiliki operasi baca dan tulis campuran karena hasil cache mungkin berisi informasi basi. Opsi unload_s3_format
ini diatur ke secara PARQUET
default untuk UNLOAD
perintah, untuk meningkatkan kinerja dan mengurangi biaya penyimpanan. Untuk menggunakan perilaku default UNLOAD
perintah, setel ulang opsi keTEXT
.
Opsi enkripsi baru untuk membaca
Secara default, data dalam folder sementara yang AWS Glue digunakan saat membaca data dari tabel Amazon Redshift dienkripsi menggunakan enkripsi. SSE-S3
Untuk menggunakan kunci terkelola pelanggan from AWS Key Management Service (AWS KMS) untuk mengenkripsi data, Anda dapat mengatur dari ("sse_kms_key"
→ kmsKey)
mana ksmKey ID kunci berasal AWS KMS, alih-alih opsi pengaturan lama ("extraunloadoptions" →
s"ENCRYPTED KMS_KEY_ID '$kmsKey'")
di AWS Glue versi 3.0.
datasource0 = glueContext.create_dynamic_frame.from_catalog( database = "
database-name
", table_name = "table-name
", redshift_tmp_dir = args["TempDir"], additional_options = {"sse_kms_key":"<KMS_KEY_ID
>"}, transformation_ctx = "datasource0" )
IAMBerbasis Support JDBC URL
Konektor baru mendukung IAM berbasis JDBC URL sehingga Anda tidak perlu memasukkan pengguna/kata sandi atau rahasia. Dengan IAM berbasis JDBCURL, konektor menggunakan peran runtime pekerjaan untuk mengakses sumber data Amazon Redshift.
Langkah 1: Lampirkan kebijakan minimal yang diperlukan berikut ke peran runtime AWS Glue pekerjaan Anda.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:<region>:<account>:dbgroup:<cluster name>/*", "arn:aws:redshift:*:<account>:dbuser:*/*", "arn:aws:redshift:<region>:<account>:dbname:<cluster name>/<database name>" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "redshift:DescribeClusters", "Resource": "*" } ] }
Langkah 2: Gunakan IAM berbasis JDBC URL sebagai berikut. Tentukan opsi baru DbUser
dengan nama pengguna Amazon Redshift yang terhubung dengan Anda.
conn_options = { // IAM-based JDBC URL "url": "jdbc:redshift:iam://
<cluster name>
:<region>/<database name>", "dbtable": dbtable, "redshiftTmpDir": redshiftTmpDir, "aws_iam_role": aws_iam_role, "DbUser": "<Redshift User name>" // required for IAM-based JDBC URL } redshift_write = glueContext.write_dynamic_frame.from_options( frame=dyf, connection_type="redshift", connection_options=conn_options ) redshift_read = glueContext.create_dynamic_frame.from_options( connection_type="redshift", connection_options=conn_options )
catatan
A DynamicFrame
saat ini hanya mendukung IAM berbasis JDBC URL dengan a
DbUser
dalam GlueContext.create_dynamic_frame.from_options
alur kerja.
Migrasi dari AWS Glue versi 3.0 ke versi 4.0
Di AWS Glue 4.0, ETL pekerjaan memiliki akses ke konektor Amazon Redshift Spark baru dan JDBC driver baru dengan opsi dan konfigurasi yang berbeda. Konektor dan driver Amazon Redshift baru ditulis dengan mempertimbangkan kinerja, dan menjaga konsistensi transaksional data Anda. Produk-produk ini didokumentasikan dalam dokumentasi Amazon Redshift. Untuk informasi selengkapnya, lihat:
Pembatasan nama tabel/kolom dan pengidentifikasi
Konektor dan driver Amazon Redshift Spark yang baru memiliki persyaratan yang lebih terbatas untuk nama tabel Redshift. Untuk informasi selengkapnya, lihat Nama dan pengidentifikasi untuk menentukan nama tabel Amazon Redshift Anda. Alur kerja bookmark pekerjaan mungkin tidak berfungsi dengan nama tabel yang tidak cocok dengan aturan dan karakter tertentu, seperti spasi.
Jika Anda memiliki tabel lama dengan nama yang tidak sesuai dengan aturan Nama dan pengenal dan melihat masalah dengan bookmark (pekerjaan memproses ulang data tabel Amazon Redshift lama), sebaiknya ganti nama nama tabel Anda. Untuk informasi lebih lanjut, lihat ALTERTABLEcontoh.
Perubahan tempformat default di Dataframe
Konektor Spark AWS Glue versi 3.0 default tempformat
ke CSV saat menulis ke Amazon Redshift. Agar konsisten, di AWS Glue versi 3.0, yang
DynamicFrame
masih default untuk digunakan. tempformat
CSV
Jika sebelumnya Anda pernah menggunakan Spark Dataframe APIs secara langsung dengan konektor Amazon Redshift Spark, Anda dapat secara eksplisit menyetel ke dalam opsi/. tempformat
CSV DataframeReader
Writer
Jika tidak, tempformat
default ke konektor AVRO
Spark baru.
Perubahan perilaku: petakan tipe data Amazon Redshift REAL ke tipe data Spark alih-alih FLOAT DOUBLE
Di AWS Glue versi 3.0, Amazon Redshift REAL
dikonversi ke tipe Spark
DOUBLE
. Konektor Amazon Redshift Spark yang baru telah memperbarui perilaku sehingga jenis Amazon Redshift dikonversi ke, dan kembali dari,
REAL
tipe Spark. FLOAT
Jika Anda memiliki kasus penggunaan lama di mana Anda masih ingin jenis Amazon REAL
Redshift dipetakan ke tipe DOUBLE
Spark, Anda dapat menggunakan solusi berikut:
-
Untuk a
DynamicFrame
, petakanFloat
tipe keDouble
tipe denganDynamicFrame.ApplyMapping
. Untuk aDataframe
, Anda perlu menggunakancast
.
Contoh kode:
dyf_cast = dyf.apply_mapping([('a', 'long', 'a', 'long'), ('b', 'float', 'b', 'double')])