Memecahkan masalah kueri di Amazon Redshift Spectrum - Amazon Redshift

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

Memecahkan masalah kueri di Amazon Redshift Spectrum

Setelah itu, Anda dapat menemukan referensi cepat yang mengidentifikasi dan mengatasi beberapa masalah umum yang mungkin Anda temui dengan kueri Amazon Redshift Spectrum. Untuk melihat kesalahan yang dihasilkan oleh kueri Redshift Spectrum, kueri tabel sistem. SVL_S3LOG

Mencoba lagi terlampaui

Jika waktu permintaan Amazon Redshift Spectrum habis, permintaan dibatalkan dan dikirimkan kembali. Setelah lima percobaan ulang gagal, kueri gagal dengan kesalahan berikut.

error:  Spectrum Scan Error: Retries exceeded

Kemungkinan penyebabnya meliputi:

  • Ukuran file besar (lebih besar dari 1 GB). Periksa ukuran file Anda di Amazon S3 dan cari file besar dan ukuran file miring. Pecah file besar menjadi file yang lebih kecil, antara 100 MB dan 1 GB. Cobalah untuk membuat file dengan ukuran yang sama.

  • Throughput jaringan lambat. Coba kueri Anda nanti.

Akses dibatasi

Amazon Redshift Spectrum tunduk pada kuota layanan layanan lain. AWS Dalam penggunaan tinggi, permintaan Redshift Spectrum mungkin diperlukan untuk melambat, mengakibatkan kesalahan berikut.

error:  Spectrum Scan Error: Access throttled

Dua jenis pelambatan dapat terjadi:

  • Akses dibatasi oleh Amazon S3.

  • Akses dibatasi oleh. AWS KMS

Konteks kesalahan memberikan detail lebih lanjut tentang jenis pelambatan. Setelah itu, Anda dapat menemukan penyebab dan kemungkinan resolusi untuk pelambatan ini.

Akses dibatasi oleh Amazon S3

Amazon S3 mungkin membatasi permintaan Redshift Spectrum jika tingkat permintaan baca pada awalan terlalu tinggi. Untuk informasi tentang tingkat permintaan GET/HEAD yang dapat Anda capai di Amazon S3, lihat Mengoptimalkan Kinerja Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. Tingkat permintaan Amazon S3 GET/HEAD memperhitungkan semua permintaan GET/HEAD pada awalan sehingga aplikasi yang berbeda yang mengakses awalan yang sama berbagi tingkat permintaan total.

Jika permintaan Redshift Spectrum Anda sering dibatasi oleh Amazon S3, kurangi jumlah permintaan Amazon S3 GET/HEAD yang dibuat Redshift Spectrum ke Amazon S3. Untuk melakukan ini, coba gabungkan file kecil menjadi file yang lebih besar. Sebaiknya gunakan ukuran file 64 MB atau lebih besar.

Pertimbangkan juga untuk mempartisi tabel Redshift Spectrum Anda untuk mendapatkan manfaat dari pemfilteran awal dan untuk mengurangi jumlah file yang diakses di Amazon S3. Untuk informasi selengkapnya, lihat Mempartisi tabel eksternal Redshift Spectrum.

Akses dibatasi oleh AWS KMS

Jika Anda menyimpan data di Amazon S3 menggunakan enkripsi sisi server (SSE-S3 atau SSE-KMS), Amazon S3 memanggil operasi API untuk setiap file yang diakses Redshift Spectrum. AWS KMS Permintaan ini dihitung dalam kuota operasi kriptografi Anda; untuk informasi selengkapnya, lihat AWS KMS Meminta Kuota. Untuk informasi selengkapnya tentang SSE-S3 dan SSE-KMS, lihat Melindungi Data Menggunakan Enkripsi Sisi Server dan Melindungi Data Menggunakan Enkripsi Sisi Server dengan kunci KMS yang Disimpan di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon. AWS KMS

Langkah pertama untuk mengurangi jumlah permintaan yang dibuat oleh Redshift Spectrum AWS KMS adalah mengurangi jumlah file yang diakses. Untuk melakukan ini, coba gabungkan file kecil menjadi file yang lebih besar. Sebaiknya gunakan ukuran file 64 MB atau lebih besar.

Jika permintaan Redshift Spectrum Anda sering dibatasi AWS KMS, pertimbangkan untuk meminta peningkatan kuota untuk tingkat permintaan Anda AWS KMS untuk operasi kriptografi. Untuk meminta peningkatan kuota, lihat Batas AWS Layanan di. Referensi Umum Amazon Web Services

Batas sumber daya terlampaui

Redshift Spectrum memberlakukan batas atas jumlah memori yang dapat digunakan permintaan. Permintaan Redshift Spectrum yang membutuhkan lebih banyak memori gagal, menghasilkan kesalahan berikut.

error:  Spectrum Scan Error: Resource limit exceeded

Ada dua alasan umum yang dapat menyebabkan permintaan Redshift Spectrum membanjiri tunjangan memorinya:

  • Redshift Spectrum memproses sebagian besar data yang tidak dapat dibagi menjadi potongan yang lebih kecil.

  • Langkah agregasi besar diproses oleh Redshift Spectrum.

Sebaiknya gunakan format file yang mendukung pembacaan paralel dengan ukuran split 128 MB atau kurang. Lihat Membuat file data untuk kueri di Amazon Redshift Spectrum format file yang didukung dan pedoman umum untuk pembuatan file data. Saat menggunakan format file atau algoritma kompresi yang tidak mendukung pembacaan paralel, kami sarankan untuk menjaga ukuran file antara 64 MB dan 128 MB.

Tidak ada baris yang dikembalikan untuk tabel yang dipartisi

Jika kueri Anda mengembalikan nol baris dari tabel eksternal yang dipartisi, periksa apakah partisi telah ditambahkan untuk tabel eksternal ini. Redshift Spectrum hanya memindai file di lokasi Amazon S3 yang telah ditambahkan secara eksplisit menggunakan. ALTER TABLE … ADD PARTITION Kueri SVV_EXTERNAL_PARTITIONS tampilan untuk menemukan partisi yang ada. Jalankan ALTER TABLE … ADD PARTITION untuk setiap partisi yang hilang.

Kesalahan tidak diotorisasi

Verifikasi bahwa peran IAM untuk cluster memungkinkan akses ke objek file Amazon S3. Jika database eksternal Anda ada di Amazon Athena, verifikasi bahwa peran IAM memungkinkan akses ke sumber daya Athena. Untuk informasi selengkapnya, lihat Kebijakan IAM untuk Amazon Redshift Spectrum.

Format data yang tidak kompatibel

Untuk format file kolumnar, seperti Apache Parquet, jenis kolom disematkan dengan data. Jenis kolom dalam definisi CREATE EXTERNAL TABLE harus cocok dengan tipe kolom file data. Jika ada ketidakcocokan, Anda menerima kesalahan yang mirip dengan berikut ini:

File 'https://s3bucket/location/file has an incompatible Parquet schema for column ‘s3://s3bucket/location.col1'. Column type: VARCHAR, Par

Pesan kesalahan mungkin terpotong karena batas panjang pesan. Untuk mengambil pesan kesalahan lengkap, termasuk nama kolom dan jenis kolom, kueri tampilan SVL_S3LOG sistem.

Contoh berikut query SVL_S3LOG untuk query terakhir selesai.

select message from svl_s3log where query = pg_last_query_id() order by query,segment,slice;

Berikut ini adalah contoh hasil yang menunjukkan pesan kesalahan lengkap.

                            message
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––-
Spectrum Scan Error. File 'https://s3bucket/location/file has an incompatible
Parquet schema for column ' s3bucket/location.col1'. 
Column type: VARCHAR, Parquet schema:\noptional int64 l_orderkey [i:0 d:1 r:0]\n

Untuk memperbaiki kesalahan, ubah tabel eksternal agar sesuai dengan jenis kolom file Parket.

Kesalahan sintaks saat menggunakan Hive DDL di Amazon Redshift

Amazon Redshift mendukung data definition language (DDL) untuk CREATE EXTERNAL TABLE yang mirip dengan Hive DDL. Namun, kedua jenis DDL tidak selalu persis sama. Jika Anda menyalin Hive DDL untuk membuat atau mengubah tabel eksternal Amazon Redshift, Anda mungkin mengalami kesalahan sintaks. Berikut ini adalah contoh perbedaan antara Amazon Redshift dan Hive DDL:

  • Amazon Redshift memerlukan tanda kutip tunggal (') di mana Hive DDL mendukung tanda kutip ganda (“).

  • Amazon Redshift tidak mendukung tipe data STRING. Gunakan VARCHAR sebagai gantinya.

Izin untuk membuat tabel sementara

Untuk menjalankan kueri Redshift Spectrum, pengguna database harus memiliki izin untuk membuat tabel sementara dalam database. Contoh berikut memberikan izin sementara pada database spectrumdb ke grup spectrumusers pengguna.

grant temp on database spectrumdb to group spectrumusers;

Untuk informasi selengkapnya, lihat HIBAH.

Rentang tidak valid

Redshift Spectrum mengharapkan bahwa file di Amazon S3 yang termasuk dalam tabel eksternal tidak ditimpa selama kueri. Jika ini terjadi, itu dapat mengakibatkan kesalahan berikut.

Error: HTTP response error code: 416 Message: InvalidRange The requested range is not satisfiable

Untuk menghindari kesalahan, pastikan file Amazon S3 tidak ditimpa saat ditanyakan dengan Redshift Spectrum.

Nomor versi Parket tidak valid

Redshift Spectrum memeriksa metadata dari setiap file Apache Parquet yang diaksesnya. Jika pemeriksaan gagal, itu dapat mengakibatkan kesalahan yang mirip dengan yang berikut ini:

File 'https://s3.region.amazonaws.com/s3bucket/location/file has an invalid version number

Ada dua alasan umum yang dapat menyebabkan pemeriksaan gagal: