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 COPY perintah 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.

COPYPerintah ini 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 Distribusi data untuk optimasi kueri.

penting

Ketika COPY perintah 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, kami sarankan Anda menetapkan READRATIO opsi jauh lebih rendah daripada persentase rata-rata throughput penyediaan yang tidak digunakan. READRATIOPengaturan rendah akan membantu meminimalkan masalah pelambatan. Untuk menggunakan seluruh throughput yang disediakan dari tabel Amazon DynamoDB, atur ke 100. READRATIO

COPYPerintah mencocokkan 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 berbeda hanya dalam kasus, seperti Harga PRICE dan, COPY perintah akan gagal.

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

  • 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 STRING skalar NUMBER dan tipe data yang didukung. Amazon BINARY DynamoDB SET dan tipe data tidak didukung. Jika COPY perintah 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.

COPYPerintah 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 SCAN dan DESCRIBE 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 DESCRIBE untuk tabel Amazon DynamoDB yang sedang dimuat. Untuk informasi lebih lanjut tentang izin yang diperlukan, lihat IAMizin untukCOPY,UNLOAD, dan CREATE LIBRARY. Metode yang lebih disukai untuk otentikasi adalah menentukan ROLE parameter IAM _ dan memberikan Amazon Resource Name (ARN) untuk IAM peran dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat Kontrol akses berbasis peran.

Untuk mengautentikasi menggunakan ROLE parameter IAM _, <aws-account-id> and <role-name> seperti yang ditunjukkan dalam sintaks berikut.

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

Contoh berikut menunjukkan otentikasi menggunakan IAM peran.

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 NOLOAD opsi dengan COPY perintah.

Contoh berikut memuat FAVORITEMOVIES tabel 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, COPY perintah memuat data dari tabel Amazon DynamoDB secara paralel di seluruh node komputasi di cluster.

Throughput yang disediakan dengan kompresi otomatis

Secara default, COPY perintah 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 COMPROWS parameter. 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 COPY perintah 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 ASCII non-multibyte (seperti karakter Mandarin atau Sirilik), Anda harus memuat data ke kolom. VARCHAR Tipe VARCHAR data mendukung empat byte UTF -8 karakter, tetapi tipe CHAR data hanya menerima karakter single-byte. ASCII Anda tidak dapat memuat karakter lima byte atau lebih panjang ke dalam tabel Amazon Redshift. Untuk informasi lebih lanjut tentang CHAR danVARCHAR, lihatJenis data.