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.
Topik
- CREATETABLESEBAGAI SELECT (CTAS)
- Masalah file data
- Tabel Delta Lake Yayasan Linux
- Pertanyaan federasi
- JSONkesalahan terkait
- MSCK REPAIR TABLE
- Masalah keluaran
- Masalah parket
- Masalah partisi
- Izin
- Masalah sintaks kueri
- Masalah batas waktu kueri
- Masalah pelambatan
- Tampilan
- Kelompok kerja
- Sumber daya tambahan
- Katalog kesalahan Athena
CREATETABLESEBAGAI SELECT (CTAS)
Data duplikat terjadi dengan pernyataan bersamaan CTAS
Athena tidak mempertahankan validasi bersamaan untuk. CTAS Pastikan bahwa tidak ada CTAS pernyataan duplikat untuk lokasi yang sama pada saat yang sama. Bahkan jika INSERT INTO pernyataan CTAS atau gagal, data yatim piatu dapat ditinggalkan di lokasi data yang ditentukan dalam pernyataan.
HIVE_TOO_MANY_OPEN_PARTITIONS
Saat Anda menggunakan CTAS pernyataan 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 CTAS pernyataan 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.csv
dan.json
file dan Anda mengecualikan.json
file 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:
-
Tipe data yang ditentukan dalam tabel tidak cocok dengan data sumber, atau satu bidang berisi berbagai jenis data. Untuk resolusi yang disarankan, lihat Kueri Amazon Athena saya gagal dengan kesalahan HIVE "BAD_ DATA _: Error parsing field value for field x: For input string: “12312845691"
” di Pusat Pengetahuan. AWS -
Nilai nol hadir dalam bidang integer. Salah satu solusinya adalah membuat kolom dengan nilai nol sebagai
string
dan kemudian digunakanCAST
untuk mengonversi bidang dalam kueri, memberikan nilai default untuk nol.0
Untuk informasi lebih lanjut, lihat Ketika saya menanyakan CSV data di Athena, saya mendapatkan kesalahan "HIVE_ BAD _DATA: Nilai bidang penguraian kesalahan" untuk bidang x: Untuk string input: “"” di PusatPengetahuan. AWS
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
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: Salah fileSize 1234567
untuk file
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
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 Delta Lake Yayasan Linux
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:
-
Masuk AWS Glue, jalankan AWS Glue crawler.
-
Di Athena, jatuhkan meja dan buat lagi.
-
Tambahkan kolom yang hilang secara manual, baik dengan menggunakan ALTER TABLE ADD COLUMNS pernyataan di Athena, atau dengan mengedit skema tabel di. AWS Glue
Pertanyaan federasi
Batas waktu saat menelepon ListTableMetadata
Panggilan ke batas waktu ListTableMetadataAPIkaleng 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 menggunakanStartQueryExecution
sebagai alternatif untuk.ListTableMetadata
AWS CLI Contoh berikut menunjukkan bagaimanaStartQueryExecution
bisa digunakan bukanListTableMetadata
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.
JSONkesalahan terkait
NULLatau kesalahan data yang salah saat mencoba membaca JSON data
NULLatau kesalahan data yang salah saat Anda mencoba membaca JSON data 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 sebagaiNULL. Untuk informasi lebih lanjut, lihat Saya mendapatkan kesalahan ketika saya mencoba membaca JSON data di Amazon Athena
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 JSON objek yang valid -JSONException: Kunci duplikat
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 menyelesaikan "HIVE_ CURSOR _ERROR: Baris bukan JSON objek yang valid -JSONException: Kunci duplikat” saat membaca file dari AWS Config Athena
HIVE_ CURSOR _ ERROR pesan dengan cetak cantik JSON
OpenX JSON SerDePustaka Sarang JSON SerDe dan mengharapkan setiap JSON dokumen berada pada satu baris teks tanpa karakter penghentian baris yang memisahkan bidang dalam catatan. Jika JSON teks dalam format cetak yang cantik, Anda mungkin menerima pesan kesalahan seperti HIVE_ CURSOR _ERROR: Baris bukan JSON Objek yang valid
atau HIVE_ CURSOR _ERROR: JsonParseException: Tidak terduga end-of-input: penanda tutup yang diharapkan OBJECT
saat Anda mencoba menanyakan tabel setelah Anda membuatnya. Untuk informasi selengkapnya, lihat file JSON data
Beberapa JSON catatan SELECT COUNT mengembalikan 1
Jika Anda menggunakanOpenX JSON SerDe, pastikan bahwa catatan dipisahkan oleh karakter baris baru. Untuk informasi selengkapnya, lihat SELECTCOUNTKueri di Amazon Athena hanya menampilkan satu catatan meskipun JSON file input memiliki beberapa catatan
Tidak dapat menanyakan tabel yang dibuat oleh AWS Glue crawler yang menggunakan pengklasifikasi kustom JSON
Mesin Athena tidak mendukung pengklasifikasi khusus JSON. Untuk mengatasi masalah ini, buat tabel baru tanpa pengklasifikasi khusus. Untuk mengubahJSON, Anda dapat menggunakan CTAS atau membuat tampilan. Misalnya, jika Anda bekerja dengan array, Anda dapat menggunakan UNNEST opsi untuk meratakan. JSON Pilihan lain adalah menggunakan AWS Glue ETL pekerjaan yang mendukung pengklasifikasi khusus, mengonversi data menjadi parket di Amazon S3, dan kemudian menanyakannya di Athena.
MSCK REPAIR TABLE
Untuk informasi tentang masalah MSCK REPAIR TABLE terkait, 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
TIMESTAMPhasilnya kosong
Athena membutuhkan format JavaTIMESTAMP. Untuk informasi selengkapnya, lihat Ketika saya menanyakan tabel di Amazon Athena, TIMESTAMP hasilnya kosong
Simpan output kueri Athena dalam format selain CSV
Secara default, Athena hanya mengeluarkan file dalam CSV format. Untuk menampilkan hasil SELECT
kueri dalam format yang berbeda, Anda dapat menggunakan UNLOAD
pernyataan tersebut. Untuk informasi selengkapnya, lihat UNLOAD. Anda juga dapat menggunakan CTAS kueri yang menggunakan properti format tabel untuk mengkonfigurasi format output. Tidak sepertiUNLOAD
, CTAS teknik ini membutuhkan pembuatan tabel. Untuk informasi selengkapnya, lihat Bagaimana cara menyimpan output kueri Athena dalam format selainCSV, seperti format terkompresi?
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.
CREATETABLEcontoh
... ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' WITH SERDEPROPERTIES ('parquet.ignore.statistics'='true') STORED AS PARQUET ...
ALTERTABLEcontoh
ALTER TABLE ... SET TBLPROPERTIES ('parquet.ignore.statistics'='true')
Untuk informasi lebih lanjut tentang Parquet Hive SerDe, lihat. Parket SerDe
Masalah partisi
MSCKREPAIRTABLEtidak menghapus partisi basi
Jika Anda menghapus partisi secara manual di Amazon S3 dan kemudian menjalankannya MSCK REPAIRTABLE, Anda mungkin menerima pesan kesalahan Partisi yang hilang
dari sistem file. 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
MSCKREPAIRTABLEkegagalan
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.
MSCKREPAIRTABLEmendeteksi partisi tetapi tidak menambahkannya AWS Glue
Masalah ini dapat terjadi jika jalur Amazon S3 dalam kasus unta, bukan huruf kecil atau IAM kebijakan tidak mengizinkan tindakan tersebut. glue:BatchCreatePartition
Untuk informasi lebih lanjut, lihat MSCKREPAIRTABLEmendeteksi partisi di Athena tetapi tidak menambahkannya ke AWS Glue Data Catalog dalam Pusat Pengetahuan
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
PARTITIONBY tidak mendukung BIGINT tipe
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 nilai rentang dipisahkan dengan 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 REPAIR
dalam 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 lebih lanjut, lihat Bagaimana saya bisa memecahkan masalah kesalahan "FAILED: SemanticException tabel tidak dipartisi tetapi spesifikasi partisi ada
_$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
format dibuat di Amazon S3. Anda harus menghapus file-file ini secara manual.partition_value
_$folder$
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
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”
Akses ditolak dengan kode status: Kesalahan 403 saat menjalankan DDL kueri 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:
jika kondisi berikut benar:<request_id>
)
-
Anda menjalankan DDL kueri seperti
ALTER TABLE ADD PARTITION
atauMSCK REPAIR TABLE
. -
Anda memiliki bucket yang memiliki enkripsi default yang dikonfigurasi untuk digunakan
SSE-S3
. -
Bucket juga memiliki kebijakan bucket seperti berikut ini yang memaksa
PutObject
permintaan untuk menentukanPUT
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
Gunakan kredensi IAM peran 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 kredensyal IAM peran saya atau beralih ke IAM peran lain saat menghubungkan ke Athena
Masalah sintaks kueri
FAILED: NullPointerException nama adalah null
Jika Anda menggunakan AWS Glue CreateTableAPIoperasi atau AWS CloudFormation AWS::Glue::Table
template untuk membuat tabel untuk digunakan di Athena tanpa menentukan TableType
properti dan kemudian menjalankan DDL kueri seperti SHOW CREATE TABLE
atauMSCK REPAIR TABLE
, Anda dapat menerima pesan galat FAILED: NullPointerException Nama
adalah null.
Untuk mengatasi kesalahan, tentukan nilai untuk TableInputTableType
atribut sebagai bagian dari AWS Glue CreateTable
API panggilan atau AWS CloudFormation templat. Nilai yang mungkin untuk TableType
include EXTERNAL_TABLE
atauVIRTUAL_VIEW
.
Persyaratan ini hanya berlaku ketika Anda membuat tabel menggunakan AWS Glue
CreateTable
API operasi atau AWS::Glue::Table
template. Jika Anda membuat tabel untuk Athena menggunakan DDL pernyataan atau AWS Glue
crawler, TableType
properti ditentukan 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 Anda sendiri (UDF). Untuk informasi selengkapnya, lihat Bagaimana cara mengatasi kesalahan sintaks “fungsi tidak terdaftar” di Athena
GENERIC_ INTERNAL _ ERROR pengecualian
GENERIC_INTERNAL_ERROR
pengecualian dapat memiliki berbagai penyebab, termasuk yang berikut:
-
GENERIC_ INTERNAL _ERROR: Null — Anda mungkin melihat pengecualian ini di bawah salah satu dari 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 nol - Anda mungkin melihat pengecualian ini saat Anda menanyakan tabel dengan kolom tipe data
array
, dan Anda menggunakan pustaka O penCSVSer De. penCSVSerde Format O tidak mendukung tipearray
data. -
GENERIC_ INTERNAL _ERROR: Nilai melebihi MAX _ INT — Anda mungkin melihat pengecualian ini ketika kolom data sumber ditentukan 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 dataBYTE
setara denganTINYINT
.TINYINT
adalah 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" ketika saya menanyakan tabel di Amazon Athena?
Jumlah grup yang cocok tidak cocok dengan jumlah kolom
Kesalahan ini terjadi ketika Anda menggunakan Regex SerDe dalam CREATE TABLE pernyataan 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
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 Support 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?
SYNTAX_ERROR: Kolom tidak dapat diselesaikan
Kesalahan ini dapat terjadi ketika Anda menanyakan tabel yang dibuat oleh AWS Glue crawler dari CSV file UTF -8 yang dikodekan 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: line
.nnn
:nn
: Terlalu banyak argumen untuk function call 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. AWS Support 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, lihat. ListTableMetadata
API 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 | AWSGlueException: Tarif terlampaui. |
AWS KMS | Anda telah melampaui tingkat di mana Anda dapat meneleponKMS. Kurangi frekuensi panggilan Anda. |
AWS Lambda |
|
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
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 Support (di, klik Support AWS Management Console, Support Center) atau ajukan pertanyaan di AWS re:post menggunakan tag