Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memuat data dari host jarak jauh
Anda dapat menggunakan perintah COPY untuk memuat data secara paralel dari satu atau beberapa host jarak jauh, seperti instans Amazon EC2 atau komputer lain. COPY terhubung ke host jarak jauh menggunakan SSH dan menjalankan perintah pada host jarak jauh untuk menghasilkan output teks.
Host jarak jauh dapat berupa instance Amazon EC2 Linux atau komputer Unix atau Linux lain yang dikonfigurasi untuk menerima koneksi SSH. Panduan ini mengasumsikan host jarak jauh Anda adalah instans Amazon EC2. Jika prosedurnya berbeda untuk komputer lain, panduan akan menunjukkan perbedaannya.
Amazon Redshift dapat terhubung ke beberapa host, dan dapat membuka beberapa koneksi SSH ke setiap host. Amazon Redshift mengirimkan perintah unik melalui setiap koneksi untuk menghasilkan output teks ke output standar host, yang kemudian dibaca oleh Amazon Redshift seperti file teks.
Sebelum Anda mulai
Sebelum Anda mulai, Anda harus memiliki yang berikut:
-
Satu atau beberapa mesin host, seperti instans Amazon EC2, yang dapat Anda sambungkan menggunakan SSH.
-
Sumber data pada host.
Anda akan memberikan perintah yang akan dijalankan oleh cluster Amazon Redshift pada host untuk menghasilkan output teks. Setelah cluster terhubung ke host, perintah COPY menjalankan perintah, membaca teks dari output standar host, dan memuat data secara paralel ke dalam tabel Amazon Redshift. Output teks harus dalam bentuk yang dapat dicerna oleh perintah COPY. Untuk informasi selengkapnya, lihat Mempersiapkan data input Anda
-
Akses ke host dari komputer Anda.
Untuk instans Amazon EC2, Anda akan menggunakan koneksi SSH untuk mengakses host. Anda harus mengakses host untuk menambahkan kunci publik cluster Amazon Redshift ke file kunci resmi host.
-
Cluster Amazon Redshift yang sedang berjalan.
Untuk informasi tentang cara meluncurkan cluster, lihat Panduan https://docs.aws.amazon.com/redshift/latest/gsg/ Memulai Amazon Redshift.
Proses pemuatan data
Bagian ini memandu Anda melalui proses memuat data dari host jarak jauh. Bagian berikut memberikan rincian yang harus Anda capai di setiap langkah.
-
Langkah 1: Ambil kunci publik cluster dan alamat IP node cluster
Kunci publik memungkinkan node cluster Amazon Redshift untuk membuat koneksi SSH ke host jarak jauh. Anda akan menggunakan alamat IP untuk setiap node cluster untuk mengonfigurasi grup keamanan host atau firewall untuk mengizinkan akses dari cluster Amazon Redshift Anda menggunakan alamat IP ini.
-
Langkah 2: Tambahkan kunci publik cluster Amazon Redshift ke file kunci resmi host
Anda menambahkan kunci publik cluster Amazon Redshift ke file kunci resmi host sehingga host akan mengenali cluster Amazon Redshift dan menerima koneksi SSH.
-
Langkah 3: Konfigurasikan host untuk menerima semua alamat IP cluster Amazon Redshift
Untuk Amazon EC2, ubah grup keamanan instans untuk menambahkan aturan input untuk menerima alamat IP Amazon Redshift. Untuk host lain, ubah firewall sehingga node Amazon Redshift Anda dapat membuat koneksi SSH ke host jarak jauh.
-
Langkah 4: Dapatkan kunci publik untuk tuan rumah
Anda dapat secara opsional menentukan bahwa Amazon Redshift harus menggunakan kunci publik untuk mengidentifikasi host. Anda harus menemukan kunci publik dan menyalin teks ke file manifes Anda.
-
Manifes adalah file JSON-formatted teks dengan detail yang dibutuhkan Amazon Redshift untuk terhubung ke host dan mengambil data.
-
Langkah 6: Unggah file manifes ke bucket Amazon S3
Amazon Redshift membaca manifes dan menggunakan informasi tersebut untuk terhubung ke host jarak jauh. Jika bucket Amazon S3 tidak berada di Wilayah yang sama dengan cluster Amazon Redshift Anda, Anda harus menggunakan REGION opsi untuk menentukan Wilayah tempat data berada.
-
Langkah 7: Jalankan perintah COPY untuk memuat data
Dari database Amazon Redshift, jalankan perintah COPY untuk memuat data ke tabel Amazon Redshift.
Langkah 1: Ambil kunci publik cluster dan alamat IP node cluster
Anda akan menggunakan alamat IP untuk setiap node cluster untuk mengonfigurasi grup keamanan host untuk mengizinkan akses dari cluster Amazon Redshift Anda menggunakan alamat IP ini.
Untuk mengambil kunci publik cluster dan alamat IP node cluster untuk cluster Anda menggunakan konsol
-
Akses Konsol Manajemen Amazon Redshift.
-
Pilih tautan Cluster di panel navigasi.
-
Pilih cluster Anda dari daftar.
-
Temukan grup Peng aturan Ingestion SSH.
Perhatikan Kunci Publik Cluster dan alamat IP Node. Anda akan menggunakannya di langkah selanjutnya.
Anda akan menggunakan alamat IP di Langkah 3 untuk mengonfigurasi host untuk menerima koneksi dari Amazon Redshift. Tergantung pada jenis host yang Anda sambungkan dan apakah itu dalam VPC, Anda akan menggunakan alamat IP publik atau alamat IP pribadi.
Untuk mengambil kunci publik cluster dan alamat IP node cluster untuk cluster Anda menggunakan Amazon Redshift CLI, jalankan perintah describe-cluster.
Contoh:
aws redshift describe-clusters --cluster-identifier <cluster-identifier>
Tanggapan akan mencakup ClusterPublicKey dan daftar alamat IP pribadi dan publik, mirip dengan berikut ini:
{ "Clusters": [ { "VpcSecurityGroups": [], "ClusterStatus": "available", "ClusterNodes": [ { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "LEADER", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-0", "PublicIPAddress": "10.nnn.nnn.nnn" }, { "PrivateIPAddress": "10.nnn.nnn.nnn", "NodeRole": "COMPUTE-1", "PublicIPAddress": "10.nnn.nnn.nnn" } ], "AutomatedSnapshotRetentionPeriod": 1, "PreferredMaintenanceWindow": "wed:05:30-wed:06:00", "AvailabilityZone": "us-east-1a", "NodeType": "dc2.large", "ClusterPublicKey": "ssh-rsa AAAABexamplepublickey...Y3TAl Amazon-Redshift", ... ... }
Untuk mengambil kunci publik cluster dan alamat IP node cluster untuk cluster Anda menggunakan Amazon Redshift API, gunakan DescribeClusters tindakan tersebut. Untuk informasi selengkapnya, lihat deskripsi-cluster di Panduan Amazon Redshift CLI atau DescribeClusters di Panduan API Amazon Redshift.
Langkah 2: Tambahkan kunci publik cluster Amazon Redshift ke file kunci resmi host
Anda menambahkan kunci publik cluster ke file kunci resmi masing-masing host sehingga host akan mengenali Amazon Redshift dan menerima koneksi SSH.
Untuk menambahkan kunci publik cluster Amazon Redshift ke file kunci resmi host
-
Akses host menggunakan koneksi SSH.
Untuk informasi tentang menghubungkan ke instans menggunakan SSH, lihat Mengh ubungkan ke Instans Anda di Panduan Pengguna Amazon EC2.
-
Salin kunci publik Amazon Redshift dari konsol atau dari teks respons CLI.
-
Salin dan tempel isi kunci publik ke dalam
/home/<ssh_username>/.ssh/authorized_keysfile di host jarak jauh. Harus<ssh_username>cocok dengan nilai untuk bidang “nama pengguna” di file manifes. Sertakan string lengkap, termasuk awalan "ssh-rsa" dan akhiran "Amazon-Redshift”. Contoh:ssh-rsa AAAACTP3isxgGzVWoIWpbVvRCOzYdVifMrh… uA70BnMHCaMiRdmvsDOedZDOedZ Amazon-Redshift
Langkah 3: Konfigurasikan host untuk menerima semua alamat IP cluster Amazon Redshift
Jika Anda bekerja dengan instans Amazon EC2 atau cluster Amazon EMR, tambahkan aturan masuk ke grup keamanan host untuk mengizinkan lalu lintas dari setiap node cluster Amazon Redshift. Untuk Jenis, pilih SSH dengan protokol TCP pada Port 22. Untuk Sumber, masukkan alamat IP node cluster Amazon Redshift yang Anda ambil. Langkah 1: Ambil kunci publik cluster dan alamat IP node cluster Untuk informasi tentang menambahkan aturan ke grup keamanan Amazon EC2, lihat Mengotor isasi Lalu Lintas Masuk untuk Instans Anda di Panduan Pengguna Amazon EC2.
Gunakan alamat IP pribadi saat:
-
Anda memiliki cluster Amazon Redshift yang tidak ada di Virtual Private Cloud (VPC), dan instans Amazon EC2 -Classic, yang keduanya berada di Wilayah yang sama. AWS
-
Anda memiliki cluster Amazon Redshift yang ada di VPC, dan instans Amazon EC2 -VPC, keduanya berada di Wilayah yang sama dan di VPC yang sama AWS .
Jika tidak, gunakan alamat IP publik.
Untuk informasi selengkapnya tentang menggunakan Amazon Redshift di VPC, lihat M engelola Cluster di Virtual Private Cloud (VPC) di Panduan Manajemen Amazon Redshift.
Langkah 4: Dapatkan kunci publik untuk tuan rumah
Secara opsional, Anda dapat memberikan kunci publik host dalam file manifes sehingga Amazon Redshift dapat mengidentifikasi host. Perintah COPY tidak memerlukan kunci publik host tetapi, untuk alasan keamanan, kami sangat menyarankan menggunakan kunci publik untuk membantu mencegah serangan “man-in-the-middle”.
Anda dapat menemukan kunci publik host di lokasi berikut, di <ssh_host_rsa_key_name> mana nama unik untuk kunci publik host:
: /etc/ssh/<ssh_host_rsa_key_name>.pub
catatan
Amazon Redshift hanya mendukung kunci RSA. Kami tidak mendukung kunci DSA.
Saat Anda membuat file manifes Anda di Langkah 5, Anda akan menempelkan teks kunci publik ke bidang “Kunci Publik” di entri file manifes.
Langkah 5: Buat file manifes
Perintah COPY dapat terhubung ke beberapa host menggunakan SSH, dan dapat membuat beberapa koneksi SSH ke setiap host. COPY menjalankan perintah melalui setiap koneksi host, dan kemudian memuat output dari perintah secara paralel ke dalam tabel. File manifes adalah file teks dalam format JSON yang digunakan Amazon Redshift untuk terhubung ke host. File manifes menentukan titik akhir host SSH dan perintah yang dijalankan pada host untuk mengembalikan data ke Amazon Redshift. Secara opsional, Anda dapat menyertakan kunci publik host, nama pengguna login, dan tanda wajib untuk setiap entri.
Buat file manifes di komputer lokal Anda. Pada langkah selanjutnya, Anda mengunggah file ke Amazon S3.
File manifes dalam format berikut:
{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "host_user_name"} ] }
File manifes berisi satu konstruksi “entri” untuk setiap koneksi SSH. Setiap entri mewakili koneksi SSH tunggal. Anda dapat memiliki beberapa koneksi ke satu host atau beberapa koneksi ke beberapa host. Tanda kutip ganda diperlukan seperti yang ditunjukkan, baik untuk nama bidang maupun nilainya. Satu-satunya nilai yang tidak memerlukan tanda kutip ganda adalah nilai Boolean true atau false untuk bidang wajib.
Berikut ini menjelaskan bidang dalam file manifes.
- titik akhir
-
Alamat URL atau alamat IP host. Misalnya, "
ec2-111-222-333.compute-1.amazonaws.com" atau "22.33.44.56” - perintah
-
Perintah yang akan dijalankan oleh host untuk menghasilkan teks atau biner (gzip, lzop, atau bzip2) output. Perintah dapat berupa perintah apa pun yang pengguna “host_user_name” memiliki izin untuk menjalankan. Perintah dapat sesederhana mencetak file, atau dapat menanyakan database atau meluncurkan skrip. Output (file teks, file biner gzip, file biner lzop, atau file biner bzip2) harus dalam bentuk yang dapat dicerna oleh perintah Amazon Redshift COPY. Untuk informasi selengkapnya, lihat Mempersiapkan data input Anda.
- kunci publik
-
(Opsional) Kunci publik dari host. Jika disediakan, Amazon Redshift akan menggunakan kunci publik untuk mengidentifikasi host. Jika kunci publik tidak disediakan, Amazon Redshift tidak akan mencoba identifikasi host. Misalnya, jika kunci publik host jarak jauh adalah:
ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com, masukkan teks berikut di bidang kunci publik:AbcCbaxxx…xxxDHKJ. - wajib
-
(Opsional) Menunjukkan apakah perintah COPY akan gagal jika koneksi gagal. Nilai default-nya
false. Jika Amazon Redshift tidak berhasil membuat setidaknya satu koneksi, perintah COPY gagal. - nama pengguna
-
(Opsional) Nama pengguna yang akan digunakan untuk masuk ke sistem host dan menjalankan perintah jarak jauh. Nama login pengguna harus sama dengan login yang digunakan untuk menambahkan kunci publik ke file kunci resmi host di Langkah 2. Nama pengguna default adalah “redshift”.
Contoh berikut menunjukkan manifes lengkap untuk membuka empat koneksi ke host yang sama dan menjalankan perintah yang berbeda melalui setiap koneksi:
{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }
Langkah 6: Unggah file manifes ke bucket Amazon S3
Unggah file manifes ke bucket Amazon S3. Jika bucket Amazon S3 tidak berada di Wilayah yang sama AWS dengan cluster Amazon Redshift Anda, Anda harus menggunakan REGION opsi untuk menentukan Wil AWS ayah tempat manifes berada. Untuk informasi tentang membuat bucket Amazon S3 dan mengunggah file, lihat Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Langkah 7: Jalankan perintah COPY untuk memuat data
Jalan MENYONTEK kan perintah untuk terhubung ke host dan memuat data ke tabel Amazon Redshift. Dalam perintah COPY, tentukan jalur objek Amazon S3 eksplisit untuk file manifes dan sertakan opsi SSH. Misalnya,
COPY sales FROM 's3://amzn-s3-demo-bucket/ssh_manifest' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' SSH;
catatan
Jika Anda menggunakan kompresi otomatis, perintah COPY melakukan dua pembacaan data, yang berarti menjalankan perintah jarak jauh dua kali. Pembacaan pertama adalah memberikan sampel untuk analisis kompresi, kemudian pembacaan kedua benar-benar memuat data. Jika menjalankan perintah jarak jauh dua kali dapat menyebabkan masalah karena potensi efek samping, Anda harus mematikan kompresi otomatis. Untuk mematikan kompresi otomatis, jalankan perintah COPY dengan opsi COMPDATE disetel ke OFF. Untuk informasi selengkapnya, lihat Memuat tabel dengan kompresi otomatis.