Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Koneksi pergeseran merah
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 SQL COPY dan UNLOAD perintah. 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 Glue untuk AWS 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 VPC yang memungkinkan komunikasi antara cluster Amazon Redshift Anda, pekerjaan AWS Glue Anda, dan direktori Amazon S3 Anda.
-
Izin IAM yang sesuai pada pekerjaan AWS Glue dan cluster Amazon Redshift.
Mengkonfigurasi peran IAM
Menyiapkan peran untuk cluster Amazon Redshift
Cluster Amazon Redshift Anda harus dapat membaca dan menulis ke Amazon S3 agar dapat diintegrasikan dengan pekerjaan AWS Glue. Untuk mengizinkannya, Anda dapat mengaitkan peran IAM dengan cluster Amazon Redshift yang ingin Anda sambungkan. Peran Anda harus memiliki kebijakan yang memungkinkan membaca dan menulis ke direktori sementara Amazon S3 Anda. Peran Anda harus memiliki hubungan kepercayaan yang memungkinkan redshift.amazonaws.com layanan untuk melakukannyaAssumeRole.
Untuk mengaitkan peran IAM dengan Amazon Redshift
Pr asyarat: 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 cluster Amazon Redshift, pekerjaan AWS Glue mengeluarkan pernyataan COPY dan UNLOAD terhadap Amazon Redshift. Jika pekerjaan Anda mengubah tabel di Amazon Redshift, AWS Glue juga akan mengeluarkan pernyataan CREATE LIBRARY. Untuk informasi tentang izin Amazon S3 tertentu yang diperlukan untuk Amazon Redshift untuk mengeksekusi pernyataan ini, lihat dokumentasi Amazon Redshift: Amazon Redshift: Izin untuk mengakses Sumber Daya lain. AWS
Di konsol IAM, buat kebijakan IAM dengan izin yang diperlukan. Untuk informasi selengkapnya tentang membuat kebijakan Membuat kebijakan IAM.
Di konsol IAM, buat hubungan peran dan kepercayaan yang memungkinkan Amazon Redshift mengambil peran tersebut. Ikuti petunjuk dalam dokumentasi IAM Untuk membuat peran untuk AWS layanan (konsol)
Saat diminta untuk memilih kasus penggunaan AWS layanan, pilih “Redshift - Disesuaikan”.
Saat diminta untuk melampirkan kebijakan, pilih kebijakan yang Anda tentukan sebelumnya.
catatan
Untuk informasi selengkapnya tentang mengonfigurasi peran untuk Amazon Redshift, lihat Men gotorisasi Amazon Redshift untuk mengakses AWS layanan lain atas nama Anda di dokumentasi Amazon Redshift.
Di konsol Amazon Redshift, kaitkan peran tersebut dengan cluster Amazon Redshift Anda. Ikuti petunjuk dalam dokument https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html asi Amazon Redshift.
Pilih opsi yang disorot di konsol Amazon Redshift untuk mengonfigurasi pengaturan ini:
catatan
Secara default, pekerjaan AWS Glue melewati kredenSIAL sementara Amazon Redshift yang dibuat menggunakan peran yang Anda tentukan untuk menjalankan pekerjaan. Kami tidak merekomendasikan menggunakan kredenSIAL ini. Untuk tujuan keamanan, kredenSIAL ini kedaluwarsa setelah 1 jam.
Menyiapkan peran untuk AWS Pekerjaan lem
Pekerjaan AWS Glue membutuhkan peran untuk mengakses bucket Amazon S3. Anda tidak memerlukan izin IAM untuk cluster Amazon Redshift, akses Anda dikendalikan oleh konektivitas di Amazon VPC dan kredenSIAL database Anda.
Siapkan Amazon VPC
Untuk menyiapkan akses untuk penyimpanan data Amazon Redshift
Masuk ke Konsol Manajemen AWS 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 Klaster, pilih grup keamanan di Grup keamanan VPC untuk mengizinkan AWS Glue untuk digunakan. Catat nama grup keamanan yang Anda pilih untuk referensi di masa mendatang. Memilih grup keamanan membuka daftar Grup Keamanan konsol Amazon EC2.
-
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
grup-keamanan-basis data
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
SEMUA
SEMUA
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 endpoint Amazon S3, maka tambahkan juga aturan HTTPS untuk akses Amazon S3.s3-prefix-list-idDiperlukan dalam aturan grup keamanan untuk mengizinkan lalu lintas dari VPC ke titik akhir VPC Amazon S3.Contoh:
Tipe Protokol Rentang Port Tujuan Semua TCP
TCP
0–65535
security-groupHTTPS
TCP
443
s3-prefix-list-id
Penyiapan AWS Lem
Anda harus membuat koneksi Katalog Data AWS Glue yang menyediakan informasi koneksi Amazon VPC.
Untuk mengonfigurasi konektivitas Amazon Redshift Amazon VPC ke AWS Lem di konsol
-
Buat koneksi Katalog Data dengan mengikuti langkah-langkah di:Menambahkan AWS Glue koneksi. Setelah membuat koneksi, simpan nama koneksi,
connectionName, untuk langkah selanjutnya.Saat memilih jenis koneksi, pilih Amazon Redshift.
Saat memilih cluster Redshift, pilih cluster Anda berdasarkan nama.
Berikan informasi koneksi default untuk pengguna Amazon Redshift di cluster Anda.
Pengaturan Amazon VPC Anda akan dikonfigurasi secara otomatis.
catatan
Anda harus menyediakan
PhysicalConnectionRequirementsAmazon VPC secara manual saat membuat koneksi Amazon Redshift melalui SDK. AWS -
Dalam konfigurasi pekerjaan AWS Glue Anda, berikan
connectionNamesebagai koneksi jaringan tambahan.
Contoh: Membaca dari tabel Amazon Redshift
Anda dapat membaca dari cluster Amazon Redshift dan lingkungan tanpa server Amazon Redshift.
Pr asyarat: Tabel Amazon Redshift yang ingin Anda baca. Ikuti langkah-langkah di bagian sebelumnya Mengkonfigurasi koneksi Redshift setelah itu Anda harus memiliki URI Amazon S3 untuk direktori sementara, temp-s3-dir dan peran IAM,rs-role-name, (dalam akunrole-account-id).
Contoh: Menulis ke tabel Amazon Redshift
Anda dapat menulis ke cluster Amazon Redshift dan lingkungan tanpa server Amazon Redshift.
Pr asyarat: Cluster Amazon Redshift dan ikuti langkah-langkah di bagian sebelumnya Mengkonfigurasi koneksi Redshift setelah itu Anda harus memiliki URI Amazon S3 untuk direktori sementara, temp-s3-dir dan peran IAM,rs-role-name, (dalam akunrole-account-id). Anda juga akan memerlukan DynamicFrame isinya yang ingin Anda tulis ke database.
Referensi opsi koneksi Amazon Redshift
Opsi koneksi dasar yang digunakan untuk semua koneksi AWS Glue JDBC untuk mengatur informasi sepertiurl, user dan password konsisten di semua jenis JDBC. Untuk informasi selengkapnya tentang parameter JDBC standar, lihat. Referensi opsi koneksi JDBC
Jenis koneksi Amazon Redshift membutuhkan beberapa opsi koneksi tambahan:
-
"redshiftTmpDir": (Diperlukan) Jalur Amazon S3 tempat data sementara dapat dipentaskan saat menyalin keluar dari database. -
"aws_iam_role": (Opsional) ARN untuk peran IAM. Pekerjaan AWS Glue akan meneruskan peran ini ke cluster Amazon Redshift untuk memberikan izin cluster yang diperlukan untuk menyelesaikan instruksi dari pekerjaan.
Opsi koneksi tambahan tersedia di AWS Lem 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 parameter S park SQL di integrasi Amazon Redshift untuk Apache Spark.
Untuk kenyamanan Anda, kami mengulangi opsi baru tertentu di sini:
| Nama | Diperlukan | Default | Deskripsi |
|---|---|---|---|
| penutupan otomatis |
Tidak | BETUL | Menerapkan predikat dan permintaan pushdown dengan menangkap dan menganalisis rencana logis Spark untuk operasi SQL. Operasi diterjemahkan ke dalam kueri SQL, dan kemudian dijalankan di Amazon Redshift untuk meningkatkan kinerja. |
| autopushdown.s3_result_cache |
Tidak | SALAH | Men-cache kueri SQL untuk membongkar data untuk pemetaan jalur Amazon S3 di memori sehingga kueri yang sama tidak perlu dijalankan lagi di sesi Spark yang sama. Hanya didukung bila |
| unload_s3_format |
Tidak | PARQUET | PARQUET - Membongkar hasil kueri dalam format Parket. TEKS - Membongkar hasil kueri dalam format teks yang dibatasi pipa. |
| sse_kms_key |
Tidak | N/A | K AWS SSE-KMS unci yang digunakan untuk enkripsi selama |
| opsi ekstrakopi |
Tidak | N/A | Daftar opsi tambahan untuk ditambahkan ke Perhatikan bahwa karena opsi ini ditambahkan ke akhir |
| csvnullstring (eksperimental) |
Tidak | NULL | Nilai String untuk ditulis untuk nol saat menggunakan CSV |
Parameter baru ini dapat digunakan dengan 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:PARQUETsecara default.
Untuk informasi tentang penggunaan opsi ini, lihat integrasi Amazon Redshift untuk Apache Spark. Sebaiknya Anda tidak mengaktifkan
autopushdown.s3_result_cache saat Anda memiliki operasi baca dan tulis campuran karena hasil yang di-cache mungkin berisi informasi basi. Opsi unload_s3_format diatur secara PARQUET default untuk UNLOAD perintah, untuk meningkatkan kinerja dan mengurangi biaya penyimpanan. Untuk menggunakan perilaku default UNLOAD perintah, atur 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 di SSE-S3 enkripsi menggunakan enkripsi. Untuk menggunakan kunci yang dikelola pelanggan dari AWS Key Management Service (AWS KMS) untuk mengenkripsi data Anda, Anda dapat mengatur dari ("sse_kms_key"
→ kmsKey) mana KSM Key adalah ID kunci AWS KMS, bukan 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" )
Mendukung IAM-based URL JDBC
Konektor baru mendukung URL IAM-based JDBC sehingga Anda tidak perlu memasukkan user/password atau rahasia. Dengan URL IAM-based JDBC, konektor menggunakan peran runtime pekerjaan untuk mengakses sumber data Amazon Redshift.
Langkah 1: Lampirkan kebijakan minimal wajib berikut ke peran runtime AWS Glue pekerjaan Anda.
Langkah 2: Gunakan URL IAM-based JDBC sebagai berikut. Tentukan opsi baru DbUser dengan nama pengguna Amazon Redshift yang Anda sambungkan.
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
DynamicFrameSaat ini hanya mendukung URL IAM-based JDBC dengan a
DbUser dalam alur kerja. GlueContext.create_dynamic_frame.from_options
Migrasi dari AWS Lem versi 3.0 ke versi 4.0
Di AWS Glue 4.0, pekerjaan ETL memiliki akses ke konektor Amazon Redshift Spark baru dan driver JDBC 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:
Table/column pembatasan nama 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 sesuai dengan aturan dan dengan karakter tertentu, seperti spasi.
Jika Anda memiliki tabel lama dengan nama yang tidak sesuai dengan aturan Nama dan pengidentifikasi dan melihat masalah dengan bookmark (pekerjaan memproses ulang data tabel Amazon Redshift lama), sebaiknya ganti nama tabel Anda. Untuk informasi selengkapnya, lihat contoh ALTER TABLE.
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,
DynamicFrame masih default tempformat untuk digunakanCSV. Jika sebelumnya Anda telah menggunakan API Spark Dataframe secara langsung dengan konektor Amazon Redshift Spark, Anda dapat secara eksplisit menyetel tempformat ke CSV di opsi/. DataframeReader Writer Jika tidak, tempformat default ke AVRO konektor Spark baru.
Perubahan perilaku: petakan tipe data Amazon Redshift REAL ke tipe data Spark FLOAT alih-alih DOUBLE
Dalam AWS Glue versi 3.0, Amazon Redshift REAL dikonversi ke
DOUBLE tipe Spark. Konektor Amazon Redshift Spark baru telah memperbarui perilaku sehingga jenis Amazon Redshift dikonversi ke, dan kembali dari,
REAL tipe SparkFLOAT. Jika Anda memiliki kasus penggunaan lama di mana Anda masih ingin jenis Amazon Redshift dipetakan ke REAL DOUBLE tipe Spark, Anda dapat menggunakan solusi berikut:
-
Untuk a
DynamicFrame, petFloatakan tipe keDoubletipe denganDynamicFrame.ApplyMapping. Untuk aDataframe, Anda perlu menggunakancast.
Contoh kode:
dyf_cast = dyf.apply_mapping([('a', 'long', 'a', 'long'), ('b', 'float', 'b', 'double')])
Penanganan Tipe Data VARBYTE
Saat bekerja dengan tipe data AWS Glue 3.0 dan Amazon Redshift, AWS Glue 3.0 mengubah Amazon Redshift VARBYTE ke tipe SparkSTRING. Namun, konektor Amazon Redshift Spark terbaru tidak mendukung tipe VARBYTE data. Untuk mengatasi batasan ini, Anda dapat membuat tampilan Redshift yang mengubah VARBYTE kolom menjadi tipe data yang didukung. Kemudian, gunakan konektor baru untuk memuat data dari tampilan ini alih-alih tabel asli, yang memastikan kompatibilitas sambil mempertahankan akses ke VARBYTE data Anda.
Contoh untuk kueri Redshift:
CREATE VIEWview_nameAS SELECT FROM_VARBYTE(varbyte_column, 'hex') FROMtable_name