Memecahkan masalah di Athena - Amazon Athena

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

Memecahkan masalah di Athena

Tim Athena telah mengumpulkan informasi pemecahan masalah berikut dari masalah pelanggan. Meskipun tidak komprehensif, ini mencakup saran mengenai beberapa masalah kinerja umum, batas waktu, dan kehabisan memori.

BUAT TABEL SEBAGAI PILIH (CTAS)

Data duplikat terjadi dengan pernyataan CTAS bersamaan

Athena tidak mempertahankan validasi bersamaan untuk CTAS. Pastikan bahwa tidak ada pernyataan CTAS duplikat untuk lokasi yang sama pada saat yang sama. Bahkan jika pernyataan CTAS atau INSERT INTO gagal, data yatim piatu dapat ditinggalkan di lokasi data yang ditentukan dalam pernyataan.

HIVE_TOO_MANY_OPEN_PARTITIONS

Bila Anda menggunakan pernyataan CTAS untuk membuat tabel dengan lebih dari 100 partisi, Anda mungkin menerima kesalahan HIVE_TOO_MANY_OPEN_PARTITIONS: Melebihi batas 100 penulis terbuka untuk partisi/ember. Untuk mengatasi batasan ini, Anda dapat menggunakan pernyataan CTAS dan serangkaian INSERT INTO pernyataan yang membuat atau menyisipkan hingga 100 partisi masing-masing. Untuk informasi selengkapnya, lihat Gunakan CTAS dan INSERT INTO untuk bekerja di sekitar batas partisi 100.

Masalah file data

Athena tidak dapat membaca file tersembunyi

Athena memperlakukan file sumber yang dimulai dengan garis bawah (_) atau titik (.) sebagai tersembunyi. Untuk mengatasi batasan ini, ganti nama file.

Athena membaca file yang saya kecualikan dari crawler AWS Glue

Athena tidak mengenali pola pengecualian yang Anda tentukan crawler. AWS Glue Misalnya, jika Anda memiliki bucket Amazon S3 yang berisi keduanya.csvdan.jsonfile dan Anda mengecualikan.jsonfile dari crawler, Athena mengkueri kedua grup file. Untuk menghindari hal ini, menempatkan file yang ingin Anda mengecualikan di lokasi yang berbeda.

HIVE_BAD_DATA: Kesalahan mengurai nilai bidang

Kesalahan ini dapat terjadi dalam skenario berikut:

HIVE_CANNOT_OPEN_SPLIT: Kesalahan saat membuka pemisahan Hive s3://amzn-s3-demo-bucket

Kesalahan ini dapat terjadi saat Anda menanyakan awalan bucket Amazon S3 yang memiliki banyak objek. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi kesalahan “HIVE_CANNOT_OPEN_SPLIT: Error opening Hive split s3://amzn-s3-demo-bucket/: Slow down” di Athena? di pusat AWS pengetahuan.

HIVE_CURSOR_ERROR: com.amazonaws.services.s3.model.amazons3Exception: Kunci yang ditentukan tidak ada

Kesalahan ini biasanya terjadi ketika file dihapus ketika kueri sedang berjalan. Jalankan kembali kueri, atau periksa alur kerja Anda untuk melihat apakah pekerjaan atau proses lain memodifikasi file saat kueri sedang berjalan.

HIVE_CURSOR_ERROR: Akhir aliran input yang tidak terduga

Pesan ini menunjukkan file rusak atau kosong. Periksa integritas file dan jalankan kembali kueri.

HIVE_FILESYSTEM_ERROR: FileSize salah untuk file 1234567

Pesan ini dapat terjadi ketika file telah berubah antara perencanaan kueri dan eksekusi kueri. Biasanya terjadi ketika file di Amazon S3 diganti di tempat (misalnya, a PUT dilakukan pada kunci di mana objek sudah ada). Athena tidak mendukung penghapusan atau penggantian isi file saat kueri sedang berjalan. Untuk menghindari kesalahan ini, jadwalkan pekerjaan yang menimpa atau menghapus file pada saat kueri tidak berjalan, atau hanya menulis data ke file atau partisi baru.

HIVE_UNKNOWN_ERROR: Tidak dapat membuat format masukan

Kesalahan ini dapat disebabkan oleh masalah seperti berikut:

  • AWS Glue Crawler tidak dapat mengklasifikasikan format data

  • Properti definisi AWS Glue tabel tertentu kosong

  • Athena tidak mendukung format data file di Amazon S3

Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi kesalahan “tidak dapat membuat format input” di Athena? di Pusat AWS Pengetahuan atau tonton video Pusat Pengetahuan.

Lokasi S3 yang disediakan untuk menyimpan hasil kueri Anda tidak valid.

Pastikan Anda telah menentukan lokasi S3 yang valid untuk hasil kueri Anda. Untuk informasi selengkapnya, lihat Tentukan lokasi hasil kueri dalam topik Bekerja dengan hasil kueri dan kueri terbaru.

Tabel Linux Foundation Delta Lake

Skema tabel Delta Lake tidak sinkron

Saat Anda menanyakan tabel Delta Lake yang memiliki skema AWS Glue yang sudah usang, Anda dapat menerima pesan galat berikut:

INVALID_GLUE_SCHEMA: Delta Lake table schema in Glue does not match the most recent schema of the Delta Lake transaction log. Please ensure that you have the correct schema defined in Glue.

Skema dapat menjadi usang jika dimodifikasi AWS Glue setelah ditambahkan ke Athena. Untuk memperbarui skema, lakukan salah satu langkah berikut:

Pertanyaan federasi

Batas waktu saat menelepon ListTableMetadata

Panggilan ke ListTableMetadataAPI dapat batas waktu jika ada banyak tabel di sumber data, jika sumber data lambat, atau jika jaringan lambat. Untuk memecahkan masalah ini, coba langkah-langkah berikut.

  • Periksa jumlah tabel — Jika Anda memiliki lebih dari 1000 tabel, coba kurangi jumlah tabel. Untuk ListTableMetadata respons tercepat, kami sarankan memiliki kurang dari 1000 tabel per katalog.

  • Periksa konfigurasi Lambda - Memantau perilaku fungsi Lambda sangat penting. Saat Anda menggunakan katalog federasi, pastikan untuk memeriksa log eksekusi fungsi Lambda. Berdasarkan hasil, sesuaikan nilai memori dan batas waktu yang sesuai. Untuk mengidentifikasi potensi masalah dengan batas waktu, kunjungi kembali konfigurasi Lambda Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi batas waktu fungsi (konsol) di Panduan AWS Lambda Pengembang.

  • Periksa log sumber data federasi — Periksa log dan pesan kesalahan dari sumber data federasi untuk melihat apakah ada masalah atau kesalahan. Log dapat memberikan wawasan berharga tentang penyebab batas waktu.

  • Gunakan StartQueryExecution untuk mengambil metadata — Jika Anda memiliki lebih dari 1000 tabel, dibutuhkan waktu lebih lama dari yang diharapkan untuk mengambil metadata menggunakan konektor federasi Anda. Karena sifat asinkron memastikan StartQueryExecutionbahwa Athena menjalankan kueri dengan cara yang paling optimal, pertimbangkan untuk menggunakan StartQueryExecution sebagai alternatif untuk. ListTableMetadata AWS CLI Contoh berikut menunjukkan bagaimana StartQueryExecution bisa digunakan bukan ListTableMetadata untuk mendapatkan semua metadata tabel dalam katalog data Anda.

    Pertama, jalankan query yang mendapatkan semua tabel, seperti pada contoh berikut.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT table_name FROM information_schema.tables LIMIT 50" \ --work-group "your-work-group-name"

    Selanjutnya, ambil metadata tabel individual, seperti pada contoh berikut.

    aws athena start-query-execution --region us-east-1 \ --query-string "SELECT * FROM information_schema.columns \ WHERE table_name = 'your-table-name' AND \ table_catalog = 'your-catalog-name'" \ --work-group "your-work-group-name"

    Waktu yang dibutuhkan untuk mendapatkan hasil tergantung pada jumlah tabel dalam katalog Anda.

Untuk informasi selengkapnya tentang pemecahan masalah kueri gabungan, lihat Common_Problems di aws-athena-query-federation bagian awslabs/, GitHub atau lihat dokumentasi untuk masing-masing konektor sumber data Athena.

Kesalahan data NULL atau salah saat mencoba membaca data JSON

Kesalahan data NULL atau salah saat Anda mencoba membaca data JSON dapat disebabkan oleh sejumlah penyebab. Untuk mengidentifikasi garis yang menyebabkan kesalahan saat Anda menggunakan OpenX SerDe, atur ignore.malformed.json ke. true Catatan cacat akan kembali sebagai NULL. Untuk informasi lebih lanjut, lihat Saya mendapatkan kesalahan ketika saya mencoba membaca data JSON di Amazon Athena di AWS Pusat Pengetahuan atau menonton video Pusat Pengetahuan.

HIVE_BAD_DATA: Kesalahan mengurai nilai bidang untuk bidang 0: java.lang.String tidak dapat dilemparkan ke org.openx.data.jsonserde.json. JSONObject

Ini OpenX JSON SerDe melempar kesalahan ini ketika gagal mengurai kolom dalam kueri Athena. Ini bisa terjadi jika Anda mendefinisikan kolom sebagai map ataustruct, tetapi data yang mendasarinya sebenarnya adalahstring,int, atau tipe primitif lainnya.

HIVE_CURSOR_ERROR: Baris bukan objek JSON yang valid -: Kunci duplikat JSONException

Kesalahan ini terjadi ketika Anda menggunakan Athena untuk menanyakan AWS Config sumber daya yang memiliki beberapa tag dengan nama yang sama dalam kasus yang berbeda. Solusinya adalah menjalankan CREATE TABLE menggunakan WITH SERDEPROPERTIES 'case.insensitive'='false' dan memetakan nama. Untuk informasi tentang case.insensitive dan pemetaan, lihatJSON SerDe perpustakaan. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi “HIVE_CURSOR_ERROR: Baris bukan objek JSON yang valid - JSONException: Kunci duplikat” saat membaca file dari Athena? AWS Config di pusat AWS pengetahuan.

Pesan HIVE_CURSOR_ERROR dengan JSON yang dicetak cantik

OpenX JSON SerDePustaka Sarang JSON SerDe dan mengharapkan setiap dokumen JSON berada pada satu baris teks tanpa karakter penghentian baris yang memisahkan bidang dalam catatan. Jika teks JSON dalam format cetak cantik, Anda mungkin menerima pesan kesalahan seperti HIVE_CURSOR_ERROR: Row is not a valid JSON Object or HIVE_CURSOR_ERROR:: Unexpected JsonParseException end-of-input: expected close marker for OBJECT saat Anda mencoba menanyakan tabel setelah Anda membuatnya. Untuk informasi selengkapnya, lihat file data JSON dalam dokumentasi SerDe OpenX pada. GitHub

Beberapa catatan JSON mengembalikan HITUNGAN SELECT 1

Jika Anda menggunakanOpenX JSON SerDe, pastikan bahwa catatan dipisahkan oleh karakter baris baru. Untuk informasi selengkapnya, lihat Kueri SELECT COUNT di Amazon Athena hanya menampilkan satu catatan meskipun file JSON masukan memiliki beberapa catatan di Pusat Pengetahuan. AWS

Tidak dapat menanyakan tabel yang dibuat oleh AWS Glue crawler yang menggunakan pengklasifikasi JSON kustom

Mesin Athena tidak mendukung pengklasifikasi JSON khusus. Untuk mengatasi masalah ini, buat tabel baru tanpa pengklasifikasi khusus. Untuk mengubah JSON, Anda dapat menggunakan CTAS atau membuat tampilan. Misalnya, jika Anda bekerja dengan array, Anda dapat menggunakan opsi UNNEST untuk meratakan JSON. Pilihan lain adalah menggunakan pekerjaan AWS Glue ETL yang mendukung pengklasifikasi khusus, mengonversi data menjadi parket di Amazon S3, dan kemudian menanyakannya di Athena.

TABEL PERBAIKAN MSCK

Untuk informasi tentang masalah terkait MSCK REPAIR TABLE, lihat Pemecahan Masalah bagian Pertimbangan dan batasan dan MSCK REPAIR TABLE halaman.

Masalah keluaran

Tidak dapat memverifikasi/membuat bucket keluaran

Kesalahan ini dapat terjadi jika lokasi hasil kueri yang ditentukan tidak ada atau jika izin yang tepat tidak ada. Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi kesalahan “tidak dapat memverifikasi/membuat bucket keluaran” di Amazon Athena? di pusat AWS pengetahuan.

Hasil TIMESTAMP kosong

Athena membutuhkan format Java TIMESTAMP. Untuk informasi selengkapnya, lihat Saat saya menanyakan tabel di Amazon Athena, hasil TIMESTAMP kosong di Pusat Pengetahuan. AWS

Simpan output kueri Athena dalam format selain CSV

Secara default, Athena hanya mengeluarkan file dalam format CSV. Untuk menampilkan hasil SELECT kueri dalam format yang berbeda, Anda dapat menggunakan UNLOAD pernyataan tersebut. Untuk informasi selengkapnya, lihat UNLOAD. Anda juga dapat menggunakan kueri CTAS yang menggunakan properti format tabel untuk mengkonfigurasi format output. Tidak sepertiUNLOAD, teknik CTAS membutuhkan pembuatan tabel. Untuk informasi selengkapnya, lihat Bagaimana cara menyimpan output kueri Athena dalam format selain CSV, seperti format terkompresi? di pusat AWS pengetahuan.

Lokasi S3 yang disediakan untuk menyimpan hasil kueri Anda tidak valid

Anda dapat menerima pesan galat ini jika lokasi bucket keluaran tidak berada di Region yang sama dengan Region tempat Anda menjalankan kueri. Untuk menghindari hal ini, tentukan lokasi hasil kueri di Wilayah tempat Anda menjalankan kueri. Untuk langkah, lihat Tentukan lokasi hasil kueri.

Masalah parket

org.apache.parquet.io. GroupColumnIO tidak dapat dilemparkan ke org.apache.parquet.io. PrimitiveColumnIO

Kesalahan ini disebabkan oleh ketidakcocokan skema parket. Kolom yang memiliki tipe non-primitif (misalnya,array) telah dideklarasikan sebagai tipe primitif (misalnya,string) di. AWS Glue Untuk memecahkan masalah ini, periksa skema data dalam file dan bandingkan dengan skema yang dideklarasikan. AWS Glue

Masalah statistik parket

Ketika Anda membaca data Parket, Anda mungkin menerima pesan kesalahan seperti berikut:

HIVE_CANNOT_OPEN_SPLIT: Index x out of bounds for length y HIVE_CURSOR_ERROR: Failed to read x bytes HIVE_CURSOR_ERROR: FailureException at Malformed input: offset=x HIVE_CURSOR_ERROR: FailureException at java.io.IOException: can not read class org.apache.parquet.format.PageHeader: Socket is closed by peer.

Untuk mengatasi masalah ini, gunakan ALTER TABLE SET TBLPROPERTIES pernyataan CREATE TABLE or untuk menyetel SerDe parquet.ignore.statistics properti Parkettrue, seperti pada contoh berikut.

CREATE TABLE contoh

... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...

Contoh ALTER TABLE

ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')

Untuk informasi lebih lanjut tentang Parquet Hive SerDe, lihat. Parket SerDe

Masalah partisi

MSCK REPAIR TABLE tidak menghapus partisi basi

Jika Anda menghapus partisi secara manual di Amazon S3 dan kemudian menjalankan MSCK REPAIR TABLE, Anda mungkin menerima pesan kesalahan Partisi hilang dari sistem file. Hal ini terjadi karena MSCK REPAIR TABLE tidak menghapus partisi basi dari metadata tabel. Gunakan ALTER TABLE DROP PARTITION untuk menghapus partisi basi secara manual. Untuk informasi selengkapnya, lihat bagian “Pemecahan Masalah” pada topik. MSCK REPAIR TABLE

Kegagalan TABEL PERBAIKAN MSCK

Ketika sejumlah besar partisi (misalnya, lebih dari 100.000) dikaitkan dengan tabel tertentu, MSCK REPAIR TABLE dapat gagal karena keterbatasan memori. Untuk mengatasi batas ini, gunakan ALTER TABLE ADD PARTITION sebagai gantinya.

MSCK REPAIR TABLE mendeteksi partisi tetapi tidak menambahkannya AWS Glue

Masalah ini dapat terjadi jika jalur Amazon S3 dalam kasus unta, bukan huruf kecil atau kebijakan IAM tidak mengizinkan tindakan tersebut. glue:BatchCreatePartition Untuk informasi lebih lanjut, lihat MSCK REPAIR TABLE mendeteksi partisi di Athena tetapi tidak menambahkannya ke dalam Pusat Pengetahuan. AWS Glue Data Catalog AWS

Proyeksi partisi berkisar dengan format tanggal dd-MM-yyyy-HH -mm-ss atau tidak berfungsi yyyy-MM-dd

Agar berfungsi dengan benar, format tanggal harus diatur keyyyy-MM-dd HH:00:00. Untuk informasi selengkapnya, lihat Proyeksi partisi Stack Overflow post Athena tidak berfungsi seperti yang diharapkan.

PARTITION BY tidak mendukung tipe BIGINT

Ubah tipe data ke string dan coba lagi.

Tidak ada partisi yang berarti tersedia

Pesan kesalahan ini biasanya berarti pengaturan partisi telah rusak. Untuk mengatasi masalah ini, jatuhkan tabel dan buat tabel dengan partisi baru.

Proyeksi partisi tidak bekerja bersama dengan partisi rentang

Periksa apakah proyeksi unit rentang waktu. <columnName>.interval.unit cocok dengan pembatas untuk partisi. Misalnya, jika partisi dibatasi oleh hari, maka satuan rentang jam tidak akan berfungsi.

Kesalahan proyeksi partisi ketika rentang ditentukan oleh tanda hubung

Menentukan properti range tabel dengan tanda hubung alih-alih koma menghasilkan kesalahan seperti INVALID_TABLE_PROPERTY: Untuk string input: "-". number number Pastikan bahwa nilai rentang dipisahkan oleh koma, bukan tanda hubung. Untuk informasi selengkapnya, lihat Jenis bilangan bulat.

HIVE_UNKNOWN_ERROR: Tidak dapat membuat format masukan

Satu atau lebih partisi lem dinyatakan dalam format yang berbeda karena setiap partisi lem memiliki format input spesifiknya sendiri secara independen. Silakan periksa bagaimana partisi Anda didefinisikan dalam AWS Glue.

HIVE_PARTITION_SCHEMA_MISMATCH

Jika skema partisi berbeda dari skema tabel, kueri dapat gagal dengan pesan kesalahan HIVE_PARTITION_SCHEMA_MISMATCH.

Untuk setiap tabel dalam Katalog AWS Glue Data yang memiliki kolom partisi, skema disimpan pada tingkat tabel dan untuk setiap partisi individu dalam tabel. Skema untuk partisi diisi oleh AWS Glue crawler berdasarkan sampel data yang dibaca dalam partisi.

Saat Athena menjalankan kueri, itu memvalidasi skema tabel dan skema dari setiap partisi yang diperlukan untuk kueri. validasi membandingkan jenis data kolom dalam rangka dan memastikan bahwa mereka cocok untuk kolom yang tumpang tindih. Ini mencegah operasi tak terduga seperti menambahkan atau menghapus kolom dari tengah tabel. Jika Athena mendeteksi bahwa skema partisi berbeda dari skema tabel, Athena mungkin tidak dapat memproses kueri dan gagal denganHIVE_PARTITION_SCHEMA_MISMATCH.

Ada beberapa cara untuk memperbaiki masalah ini. Pertama, jika data tidak sengaja ditambahkan, Anda dapat menghapus file data yang menyebabkan perbedaan dalam skema, menjatuhkan partisi, dan re-crawl data. Kedua, Anda dapat drop partisi individu dan kemudian jalankanMSCK REPAIRdalam Athena untuk menciptakan kembali partisi menggunakan skema tabel ini. Opsi kedua ini bekerja hanya jika Anda yakin bahwa skema diterapkan akan terus membaca data dengan benar.

SemanticException tabel tidak dipartisi tetapi spesifikasi partisi ada

Kesalahan ini dapat terjadi ketika tidak ada partisi yang didefinisikan dalam CREATE TABLE pernyataan. Untuk informasi selengkapnya, lihat Bagaimana cara memecahkan masalah kesalahan “GAGAL: SemanticException tabel tidak dipartisi tetapi spesifikasi partisi ada” di Athena? di pusat AWS pengetahuan.

_$folder$File byte nol

Jika Anda menjalankan ALTER TABLE ADD PARTITION pernyataan dan salah menentukan partisi yang sudah ada dan lokasi Amazon S3 yang salah, file placeholder nol byte dari partition_value_$folder$ format dibuat di Amazon S3. Anda harus menghapus file-file ini secara manual.

Untuk mencegah hal ini terjadi, gunakan ADD IF NOT EXISTS sintaks dalam ALTER TABLE ADD PARTITION pernyataan Anda, seperti ini:

ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]

Nol catatan dikembalikan dari data yang dipartisi

Masalah ini dapat terjadi karena berbagai alasan. Untuk kemungkinan penyebab dan resolusi, lihat Saya membuat tabel di Amazon Athena dengan partisi yang ditentukan, tetapi ketika saya menanyakan tabel, nol catatan dikembalikan di AWS Pusat Pengetahuan.

Lihat juga HIVE_TOO_MANY_OPEN_PARTITIONS.

Izin

Kesalahan akses ditolak saat menanyakan Amazon S3

Hal ini dapat terjadi jika Anda tidak memiliki izin untuk membaca data di bucket, izin untuk menulis ke bucket hasil, atau jalur Amazon S3 berisi titik akhir Wilayah seperti. us-east-1.amazonaws.com Untuk informasi selengkapnya, lihat Ketika saya menjalankan kueri Athena, saya mendapatkan kesalahan “akses ditolak” di Pusat AWS Pengetahuan.

Akses ditolak dengan kode status: Kesalahan 403 saat menjalankan kueri DDL pada data terenkripsi di Amazon S3

Ketika Anda mungkin menerima pesan kesalahan Akses Ditolak (Layanan: Amazon S3; Kode Status: 403; Kode Kesalahan: AccessDenied; ID Permintaan:<request_id>) jika kondisi berikut benar:

  1. Anda menjalankan query DDL seperti ALTER TABLE ADD PARTITION atauMSCK REPAIR TABLE.

  2. Anda memiliki bucket yang memiliki enkripsi default yang dikonfigurasi untuk digunakanSSE-S3.

  3. Bucket juga memiliki kebijakan bucket seperti berikut ini yang memaksa PutObject permintaan untuk menentukan PUT header "s3:x-amz-server-side-encryption": "true" dan"s3:x-amz-server-side-encryption": "AES256".

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption": "true" } } }, { "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::<resource-name>/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "AES256" } } } ] }

Dalam kasus seperti ini, solusi yang disarankan adalah menghapus kebijakan bucket seperti yang di atas mengingat enkripsi default bucket sudah ada.

Akses ditolak dengan kode status: 403 saat menanyakan bucket Amazon S3 di akun lain

Kesalahan ini dapat terjadi ketika Anda mencoba menanyakan log yang ditulis oleh orang lain Layanan AWS dan akun kedua adalah pemilik bucket tetapi tidak memiliki objek di ember. Untuk informasi lebih lanjut, lihat saya mendapatkan pengecualian Amazon S3 “akses ditolak dengan kode status: 403" di Amazon Athena ketika saya menanyakan ember di akun lain di Pusat Pengetahuan. AWS

Gunakan kredensi peran IAM untuk terhubung ke driver Athena JDBC

Anda dapat mengambil kredensi sementara peran untuk mengautentikasi koneksi JDBC ke Athena. Kredensi sementara memiliki umur maksimum 12 jam. Untuk informasi selengkapnya, lihat Bagaimana cara menggunakan kredensi peran IAM saya atau beralih ke peran IAM lain saat menyambung ke Athena menggunakan driver JDBC? di pusat AWS pengetahuan.

Deskriptor penyimpanan tabel yang diperlukan tidak diisi

Hal ini dapat terjadi ketika Anda mencoba untuk query atau melihat tabel yang Anda tidak memiliki izin untuk. Untuk ini, solusi yang disarankan adalah memberikan DESCRIBE dan SELECT mengizinkan sumber daya melalui AWS Lake Formation. Jika sumber daya Anda dibagikan di seluruh akun, di mana sumber daya asli ada di akun A dan Anda ingin melakukan kueri terhadap sumber daya tertaut di akun B. Anda harus memastikan bahwa peran Anda memiliki DESCRIBE izin pada sumber daya asli di akun A, dan SELECT izin pada sumber daya tertaut di akun B.

Masalah sintaks kueri

GAGAL: NullPointerException nama adalah null

Jika Anda menggunakan operasi AWS Glue CreateTableAPI atau AWS CloudFormation AWS::Glue::Tabletemplate untuk membuat tabel untuk digunakan di Athena tanpa menentukan TableType properti dan kemudian menjalankan kueri DDL seperti SHOW CREATE TABLE atauMSCK REPAIR TABLE, Anda dapat menerima pesan kesalahan GAGAL: NullPointerException Nama adalah null.

Untuk mengatasi kesalahan, tentukan nilai TableInputTableTypeatribut sebagai bagian dari panggilan AWS Glue CreateTable API atau AWS CloudFormation templat. Nilai yang mungkin untuk TableType include EXTERNAL_TABLE atauVIRTUAL_VIEW.

Persyaratan ini hanya berlaku ketika Anda membuat tabel menggunakan operasi AWS Glue CreateTable API atau AWS::Glue::Table template. Jika Anda membuat tabel untuk Athena menggunakan pernyataan DDL atau AWS Glue crawler, TableType properti didefinisikan untuk Anda secara otomatis.

Fungsi tidak terdaftar

Kesalahan ini terjadi ketika Anda mencoba menggunakan fungsi yang tidak didukung Athena. Untuk daftar fungsi yang didukung Athena, lihat Fungsi di Amazon Athena atau jalankan SHOW FUNCTIONS pernyataan di Editor Kueri. Anda juga dapat menulis fungsi yang ditentukan pengguna (UDF) Anda sendiri. Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi kesalahan sintaks “fungsi tidak terdaftar” di Athena? di pusat AWS pengetahuan.

PENGECUALIAN GENERIC_INTERNAL_ERROR

GENERIC_INTERNAL_ERRORpengecualian dapat memiliki berbagai penyebab, termasuk yang berikut:

  • GENERIC_INTERNAL_ERROR: Null — Anda mungkin melihat pengecualian ini di bawah salah satu kondisi berikut:

    • Anda memiliki ketidakcocokan skema antara tipe data kolom dalam definisi tabel dan tipe data aktual dari kumpulan data.

    • Anda menjalankan kueri CREATE TABLE AS SELECT (CTAS) dengan sintaks yang tidak akurat.

  • GENERIC_INTERNAL_ERROR: Pembuat induk adalah null - Anda mungkin melihat pengecualian ini saat Anda menanyakan tabel dengan kolom tipe dataarray, dan Anda menggunakan pustaka Open De. CSVSer CSVSerde Format Open tidak mendukung tipe array data.

  • GENERIC_INTERNAL_ERROR: Nilai melebihi MAX_INT — Anda mungkin melihat pengecualian ini ketika kolom data sumber didefinisikan dengan tipe data INT dan memiliki nilai numerik lebih besar dari 2.147,483.647.

  • GENERIC_INTERNAL_ERROR: Nilai melebihi MAX_BYTE — Anda mungkin melihat pengecualian ini ketika kolom data sumber memiliki nilai numerik melebihi ukuran yang diizinkan untuk tipe data. BYTE Tipe data BYTE setara denganTINYINT. TINYINTadalah bilangan bulat bertanda 8-bit dalam format komplemen dua dengan nilai minimum -128 dan nilai maksimum 127.

  • GENERIC_INTERNAL_ERROR: Jumlah nilai partisi tidak cocok dengan jumlah filter — Anda mungkin melihat pengecualian ini jika Anda memiliki partisi yang tidak konsisten pada data Amazon Simple Storage Service (Amazon S3). Anda mungkin memiliki partisi yang tidak konsisten di bawah salah satu dari kondisi berikut:

    • Partisi di Amazon S3 telah berubah (contoh: partisi baru ditambahkan).

    • Jumlah kolom partisi dalam tabel tidak cocok dengan yang ada di metadata partisi.

Untuk informasi lebih rinci tentang masing-masing kesalahan ini, lihat Bagaimana cara mengatasi kesalahan “GENERIC_INTERNAL_ERROR” saat saya menanyakan tabel di Amazon Athena? di pusat AWS pengetahuan.

Jumlah grup yang cocok tidak cocok dengan jumlah kolom

Kesalahan ini terjadi ketika Anda menggunakan Regex SerDe dalam pernyataan CREATE TABLE dan jumlah grup pencocokan regex tidak cocok dengan jumlah kolom yang Anda tentukan untuk tabel. Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi RegexSerDe kesalahan “jumlah grup yang cocok tidak cocok dengan jumlah kolom” di Amazon Athena? di pusat AWS pengetahuan.

QueryString gagal memenuhi kendala: Anggota harus memiliki panjang kurang dari atau sama dengan 262144

Panjang string kueri maksimum di Athena (262.144 byte) bukanlah kuota yang dapat disesuaikan. AWS Dukungan tidak dapat menambah kuota untuk Anda, tetapi Anda dapat mengatasi masalah dengan membagi kueri panjang menjadi yang lebih kecil. Untuk informasi selengkapnya, lihatBagaimana cara meningkatkan panjang string kueri maksimum di Athena?di AWS Pusat Pengetahuan.

SYNTAX_ERROR: Kolom tidak dapat diselesaikan

Kesalahan ini dapat terjadi ketika Anda menanyakan tabel yang dibuat oleh AWS Glue crawler dari file CSV yang dikodekan UTF-8 yang memiliki tanda urutan byte (BOM). AWS Glue tidak mengenali BOMs dan mengubahnya menjadi tanda tanya, yang tidak dikenali Amazon Athena. Solusinya adalah menghapus tanda tanya di Athena atau di. AWS Glue

Terlalu banyak argumen untuk panggilan fungsi

Di mesin Athena versi 3, fungsi tidak dapat mengambil lebih dari 127 argumen. Keterbatasan ini berdasarkan desain. Jika Anda menggunakan fungsi dengan lebih dari 127 parameter, pesan kesalahan seperti berikut terjadi:

TOO_MANY_ARGUMENTS: baris: nnnnn: Terlalu banyak argumen untuk panggilan fungsi (). function_name

Untuk mengatasi masalah ini, gunakan lebih sedikit parameter per panggilan fungsi.

Masalah batas waktu kueri

Jika Anda mengalami kesalahan batas waktu dengan kueri Athena Anda, periksa log Anda. CloudTrail Kueri dapat habis karena pembatasan atau Lake AWS Glue Formation. APIs Ketika kesalahan ini terjadi, pesan kesalahan terkait dapat menunjukkan masalah batas waktu kueri daripada masalah pelambatan. Untuk memecahkan masalah ini, Anda dapat memeriksa CloudTrail log Anda sebelum menghubungi. Dukungan Untuk informasi selengkapnya, silakan lihat AWS CloudTrail Log kueri dan Log panggilan Amazon Athena API dengan AWS CloudTrail.

Untuk informasi tentang masalah batas waktu kueri dengan kueri gabungan saat Anda memanggil ListTableMetadata API, lihat. Batas waktu saat menelepon ListTableMetadata

Masalah pelambatan

Jika kueri Anda melebihi batas layanan dependen seperti Amazon S3 AWS KMS,, AWS Glue, AWS Lambda atau, pesan berikut dapat diharapkan. Untuk mengatasi masalah ini, kurangi jumlah panggilan bersamaan yang berasal dari akun yang sama.

Layanan Pesan kesalahan
AWS Glue AWSGluePengecualian: Tingkat terlampaui.
AWS KMS Anda telah melampaui tingkat di mana Anda dapat menghubungi KMS. Kurangi frekuensi panggilan Anda.
AWS Lambda

Tarif terlampaui

TooManyRequestsException

Amazon S3 Amazons3Exception: Harap kurangi tingkat permintaan Anda.

Untuk informasi tentang cara mencegah pelambatan Amazon S3 saat Anda menggunakan Athena, lihat. Cegah pelambatan Amazon S3

Tampilan

Tampilan yang dibuat di shell Apache Hive tidak berfungsi di Athena

Karena implementasinya yang berbeda secara fundamental, tampilan yang dibuat di Apache Hive shell tidak kompatibel dengan Athena. Untuk mengatasi masalah ini, buat kembali tampilan di Athena.

Tampilan sudah basi; itu harus dibuat ulang

Anda dapat menerima kesalahan ini jika tabel yang mendasari tampilan telah diubah atau dijatuhkan. Resolusinya adalah untuk menciptakan kembali tampilan. Untuk informasi lebih lanjut, lihat Bagaimana cara mengatasi kesalahan “tampilan sudah basi; itu harus dibuat ulang” di Athena? di pusat AWS pengetahuan.

Kelompok kerja

Untuk informasi tentang pemecahan masalah grup kerja, lihat. Memecahkan masalah kesalahan kelompok kerja

Sumber daya tambahan

Halaman-halaman berikut memberikan informasi tambahan untuk mengatasi masalah dengan Amazon Athena.

AWS Sumber daya berikut juga dapat membantu:

Pemecahan masalah sering membutuhkan permintaan berulang dan penemuan oleh seorang ahli atau dari komunitas pembantu. Jika Anda terus mengalami masalah setelah mencoba saran di halaman ini, hubungi AWS Dukungan (di, klik Support AWS Management Console, Support Center) atau ajukan pertanyaan di AWS re:post menggunakan tag Amazon Athena.