Memuat data dari tabel Amazon DynamoDB - Amazon Redshift

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

Memuat data dari tabel Amazon DynamoDB

Anda dapat menggunakan perintah COPY untuk memuat tabel dengan data dari satu tabel Amazon DynamoDB.

penting

Tabel Amazon DynamoDB yang menyediakan data harus dibuat di Wilayah AWS yang sama dengan klaster Anda kecuali Anda menggunakan opsi untuk menentukan AWS Wilayah REGION tempat tabel Amazon DynamoDB berada.

Perintah COPY menggunakan arsitektur Amazon Redshift massively parallel processing (MPP) untuk membaca dan memuat data secara paralel dari tabel Amazon DynamoDB. Anda dapat memanfaatkan pemrosesan paralel secara maksimal dengan menyetel gaya distribusi pada tabel Amazon Redshift Anda. Untuk informasi selengkapnya, lihat Bekerja dengan gaya distribusi data.

penting

Saat perintah COPY membaca data dari tabel Amazon DynamoDB, transfer data yang dihasilkan adalah bagian dari throughput yang disediakan tabel tersebut.

Untuk menghindari konsumsi throughput baca yang disediakan dalam jumlah berlebihan, sebaiknya Anda tidak memuat data dari tabel Amazon DynamoDB yang ada di lingkungan produksi. Jika Anda memuat data dari tabel produksi, sebaiknya Anda menyetel opsi READRATIO jauh lebih rendah daripada persentase rata-rata throughput yang tidak digunakan. Pengaturan READRATIO rendah akan membantu meminimalkan masalah pelambatan. Untuk menggunakan seluruh throughput yang disediakan dari tabel Amazon DynamoDB, setel READRATIO ke 100.

Perintah COPY cocok dengan nama atribut dalam item yang diambil dari tabel DynamoDB ke nama kolom dalam tabel Amazon Redshift yang ada menggunakan aturan berikut:

  • Kolom tabel Amazon Redshift secara tidak peka huruf besar/kecil dicocokkan dengan atribut item Amazon DynamoDB. Jika item dalam tabel DynamoDB berisi beberapa atribut yang hanya berbeda dalam kasus, seperti Harga dan HARGA, perintah COPY akan gagal.

  • Kolom tabel Amazon Redshift yang tidak cocok dengan atribut dalam tabel Amazon DynamoDB dimuat sebagai NULL atau kosong, tergantung pada nilai yang ditentukan dengan opsi EMPTYASNULL dalam perintah. MENYONTEK

  • Atribut Amazon DynamoDB yang tidak cocok dengan kolom di tabel Amazon Redshift dibuang. Atribut dibaca sebelum dicocokkan, dan bahkan atribut yang dibuang menggunakan bagian dari throughput yang disediakan tabel itu.

  • Hanya atribut Amazon DynamoDB dengan tipe data STRING dan NUMBER skalar yang didukung. Jenis data Amazon DynamoDB BINARY dan SET tidak didukung. Jika perintah COPY mencoba memuat atribut dengan tipe data yang tidak didukung, perintah akan gagal. Jika atribut tidak cocok dengan kolom tabel Amazon Redshift, COPY tidak mencoba memuatnya, dan tidak menimbulkan kesalahan.

Perintah COPY menggunakan sintaks berikut untuk memuat data dari tabel Amazon DynamoDB:

copy <redshift_tablename> from 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

Nilai untuk otorisasi adalah AWS kredensil yang diperlukan untuk mengakses tabel Amazon DynamoDB. Jika kredensil ini sesuai dengan pengguna, pengguna tersebut harus memiliki izin untuk MEMINDAI dan MENDESKRIPSIKAN tabel Amazon DynamoDB yang sedang dimuat.

Nilai untuk otorisasi memberikan otorisasi yang AWS dibutuhkan klaster Anda untuk mengakses tabel Amazon DynamoDB. Izin harus menyertakan SCAN dan DESCRIPTION untuk tabel Amazon DynamoDB yang sedang dimuat. Untuk informasi lebih lanjut tentang izin yang diperlukan, lihat Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY. Metode yang lebih disukai untuk otentikasi adalah menentukan parameter IAM_ROLE dan memberikan Amazon Resource Name (ARN) untuk peran IAM dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat Kontrol akses berbasis peran.

Untuk mengautentikasi menggunakan parameter IAM_ROLE, <aws-account-id>dan <role-name>seperti yang ditunjukkan dalam sintaks berikut.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Contoh berikut menunjukkan otentikasi menggunakan peran IAM.

copy favoritemovies from 'dynamodb://ProductCatalog' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Untuk informasi selengkapnya tentang opsi otorisasi lainnya, lihat Parameter otorisasi

Jika Anda ingin memvalidasi data Anda tanpa benar-benar memuat tabel, gunakan opsi NOLOAD dengan perintah. MENYONTEK

Contoh berikut memuat tabel FAVORITEMOVIES dengan data dari tabel DynamoDB. my-favorite-movies-table Aktivitas membaca dapat mengkonsumsi hingga 50% dari throughput yang disediakan.

copy favoritemovies from 'dynamodb://my-favorite-movies-table' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' readratio 50;

Untuk memaksimalkan throughput, perintah COPY memuat data dari tabel Amazon DynamoDB secara paralel di seluruh node komputasi di cluster.

Throughput yang disediakan dengan kompresi otomatis

Secara default, perintah COPY menerapkan kompresi otomatis setiap kali Anda menentukan tabel target kosong tanpa pengkodean kompresi. Analisis kompresi otomatis awalnya mengambil sampel sejumlah besar baris dari tabel Amazon DynamoDB. Ukuran sampel didasarkan pada nilai parameter COMPROWS. Defaultnya adalah 100.000 baris per irisan.

Setelah pengambilan sampel, baris sampel dibuang dan seluruh tabel dimuat. Akibatnya, banyak baris dibaca dua kali. Untuk informasi selengkapnya tentang cara kerja kompresi otomatis, lihatMemuat tabel dengan kompresi otomatis.

penting

Saat perintah COPY membaca data dari tabel Amazon DynamoDB, termasuk baris yang digunakan untuk pengambilan sampel, transfer data yang dihasilkan adalah bagian dari throughput yang disediakan tabel tersebut.

Memuat data multibyte dari Amazon DynamoDB

Jika data Anda menyertakan karakter multibyte non-ASCII (seperti karakter Mandarin atau Sirilik), Anda harus memuat data ke kolom VARCHAR. Tipe data VARCHAR mendukung karakter UTF-8 empat byte, tetapi tipe data CHAR hanya menerima karakter ASCII single-byte. Anda tidak dapat memuat karakter lima byte atau lebih panjang ke dalam tabel Amazon Redshift. Untuk informasi lebih lanjut tentang CHAR dan VARCHAR, lihat. Jenis data