對 Athena 中的問題進行故障診斷 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

對 Athena 中的問題進行故障診斷

Athena 團隊收集了以下客戶問題的疑難排解資訊。雖然不是非常詳盡,但其中包括關於效能、逾時和記憶體不足等一些常見問題的建議。

CREATE TABLE AS SELECT(CTAS)

並行CTAS陳述式會發生重複的資料

Athena 不會維持 的並行驗證CTAS。確定同一位置沒有重複的CTAS陳述式。即使 CTAS或 INSERTINTO陳述式失敗,孤立的資料也可以保留在陳述式中指定的資料位置。

HIVE_TOO_MANY_OPEN_PARTITIONS

當您使用CTAS陳述式建立具有超過 100 個分割區的資料表時,您可能會收到錯誤 HIVE_TOO_MANY_OPEN_PARTITIONS:超過分割區/儲存貯體的 100 個開啟寫入器限制。若要解決此限制,您可以使用 CTAS陳述式和一系列INSERT INTO陳述式,每個陳述式最多可建立或插入 100 個分割區。如需詳細資訊,請參閱使用CTAS並INSERTINTO解決 100 個分區限制

資料檔案問題

Athena 無法讀取隱藏的檔案

Athena 會將以底線 (_) 或點 (.) 開頭的來源檔案視為隱藏。如果要解決這個限制,請將檔案重新命名。

Athena 會讀取我從 AWS Glue 爬蟲程式中排除的檔案

Athena 無法辨識排除您指定爬蟲程式的模式。 AWS Glue 例如,如果您的 Simple Storage Service (Amazon S3) 儲存貯體同時包含 .csv.json 檔案,並且您將 .json 檔案從爬蟲程式中排除,Athena 會查詢這兩個檔案群組。若要避免這種情況,請將您要排除的檔案放在不同的位置。

HIVE_BAD_DATA:剖析欄位值時發生錯誤

在下列情況下可能會發生這個錯誤:

HIVE_CANNOT_OPEN_SPLIT:開啟 Hive 分割 s3://amzn-s3-demo-bucket 時發生錯誤

當您查詢具有大量物件的 Simple Storage Service (Amazon S3) 儲存貯體字首時,可能會發生此錯誤。如需詳細資訊,請參閱 知識中心中的 AWS 如何解決 Athena 中的「HIVECANNOT__OPEN_SPLIT:開啟 Hive 分割 s3://amzn-s3-demo-bucket/: Slow down」錯誤?

HIVE_CURSOR_ERROR:com.amazonaws.services.s3.model.AmazonS3Exception:指定的金鑰不存在

當查詢正在執行時移除檔案時,通常會發生這個錯誤。重新執行查詢,或檢查您的工作流程,以查看在查詢執行時是否有其他任務或程序正在修改檔案。

HIVE_CURSOR_ERROR:輸入串流意外結束

此訊息表示檔案已損毀或空白。檢查檔案的完整性,並重新執行查詢。

HIVE_FILESYSTEM_ERROR:檔案不正確 fileSize 1234567

當檔案已在查詢規劃和查詢執行之間變更時,就會發生此訊息。這通常發生在就地取代 Simple Storage Service (Amazon S3) 上的檔案時 (例如 PUT 在物件已經存在的索引鍵上執行)。Athena 不支援在執行查詢時刪除或取代檔案的內容。若要避免此錯誤,請安排在查詢未執行時覆寫或刪除檔案的任務,或僅將資料寫入新的檔案或分割區。

HIVE_UNKNOWN_ERROR:無法建立輸入格式

此錯誤可能是由以下問題所造成:

  • AWS Glue 爬蟲程式無法分類資料格式

  • 某些 AWS Glue 資料表定義屬性為空白

  • Athena 不支援 Simple Storage Service (Amazon S3) 中檔案的資料格式

如需詳細資訊,請參閱 AWS 知識中心中的如何在 Athena 中解決「無法建立輸入格式」錯誤?或觀看知識中心的影片

提供用於儲存查詢結果的 S3 位置無效。

請確保已為查詢結果指定有效的 S3 位置。如需詳細資訊,請參閱 使用查詢結果和最近的查詢 主題中的 指定查詢結果位置

Linux Foundation Delta Lake 資料表

Delta Lake 資料表結構描述不同步

當您查詢 中結構描述已過期的 Delta Lake 資料表 AWS Glue 時,您可能會收到下列錯誤訊息:

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.

如果結構描述在新增至 Athena AWS Glue 之後在 中修改,可能會過期。若要更新結構描述,請執行下列其中一個步驟:

聯合查詢

呼叫時逾時 ListTableMetadata

如果資料來源中有許多資料表、資料來源緩慢或網路緩慢,則對 的呼叫ListTableMetadataAPI可能會逾時。若要對此問題進行疑難排解,請嘗試下列步驟。

  • 檢查資料表數量 – 如果您有 1000 個以上的資料表,請嘗試減少資料表數量。為了最快獲得 ListTableMetadata 回應,我們建議每個目錄的資料表數量少於 1000。

  • 檢查 Lambda 組態 – 監控 Lambda 函數行為非常重要。使用聯合目錄時,請務必檢查 Lambda 函數的執行日誌。根據結果,相應地調整記憶體和逾時值。若要找出任何潛在的逾時問題,請重新檢視 Lambda 組態。如需詳細資訊,請參閱《AWS Lambda 開發人員指南》中的設定 Lambda 函數逾時 (主控台)

  • 檢查聯合資料來源日誌 – 檢查來自聯合資料來源的日誌和錯誤訊息,以查看是否有任何問題或錯誤。日誌可以提供有關逾時原因的寶貴見解。

  • 使用 StartQueryExecution 擷取中繼資料 – 如果您有 1000 個以上的資料表,則使用聯合連接器擷取中繼資料可能需要比預期更長的時間。由於 的非同步性質StartQueryExecution可確保 Athena 以最佳方式執行查詢,請考慮使用 StartQueryExecution做為 的替代方案ListTableMetadata。下列 AWS CLI 範例示範StartQueryExecution如何使用 ,而不是ListTableMetadata取得資料目錄中資料表的所有中繼資料。

    首先,執行取得所有資料表的查詢,如下列範例所示。

    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"

    接著,擷取個別資料表的中繼資料,如下列範例所示。

    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"

    取得結果所花費的時間取決於目錄中的資料表數量。

如需聯合查詢疑難排解的詳細資訊,請參閱 awslabs/aws-athena-query-federation section 中的 Common_Problems GitHub,或參閱個別 Athena 資料來源連接器的文件。

NULL 或嘗試讀取資料時發生不正確JSON的資料錯誤

NULL 當您嘗試讀取資料時, 或不正確JSON的資料錯誤可能是由於多種原因所致。若要識別在使用 OpenX SerDe 時導致錯誤的行,請將 ignore.malformed.json設定為 true。格式不正確的記錄將傳回為 NULL。如需詳細資訊,請參閱 知識中心中的 AWS 當我嘗試讀取 Amazon Athena 中的JSON資料時出現錯誤,或觀看知識中心影片

HIVE_BAD_DATA:剖析欄位 0 的欄位值時發生錯誤:java.lang.String 無法轉換為 org.openx.data.jsonserde.json。JSONObject

OpenX JSON SerDe 無法剖析 Athena 查詢中的資料欄時,會擲回此錯誤。如果您將資料欄定義為 mapstruct,但基礎資料實際上是 stringint 或其他基本類型,就會發生此情況。

HIVE_CURSOR_ERROR:資料列不是有效的JSON物件 - JSONException:重複的金鑰

當您使用 Athena 查詢具有相同名稱之多個標籤 AWS Config 的資源時,會發生此錯誤。解決方案是使用 WITH SERDEPROPERTIES 'case.insensitive'='false' 執行 CREATE TABLE 並對應名稱。如需有關 case.insensitive 和映射的資訊,請參閱 JSON SerDe 圖書館。如需詳細資訊,請參閱 AWS 知識中心中的如何在 Athena AWS Config 中讀取檔案時解析 "HIVE_CURSOR_ERROR: Row 不是有效的JSON物件 - JSONException: Duplicate key"?

HIVE_CURSOR_ERROR 具有漂亮印刷的訊息 JSON

蜂巢 JSON SerDeOpenX JSON SerDe程式庫預期每個JSON文件都位於單行文字上,沒有行終止字元分隔記錄中的欄位。如果JSON文字格式很漂亮,當您在建立資料表後嘗試查詢資料表時,您可能會收到錯誤訊息,例如 HIVE_CURSOR_ERROR: Row 不是有效的JSON物件HIVEERROR_CURSOR_ JsonParseException:: Unexpected end-of-input: 預期關閉標記OBJECT。如需詳細資訊,請參閱 OpenX SerDe 文件中的JSON資料檔案 GitHub。

多個JSON記錄傳回 1 SELECTCOUNT的

如果您使用的是 OpenX JSON SerDe,請確保記錄是以換行符號字元分隔。如需詳細資訊,請參閱 Amazon Athena 中的SELECTCOUNT查詢僅傳回一個記錄,即使輸入JSON檔案在 知識中心有多個記錄。 AWS

無法查詢由使用自訂JSON分類器的 AWS Glue 爬蟲程式建立的資料表

Athena 引擎不支援自訂JSON分類器。若要解決此問題,請在不使用自訂分類器的情況下建立新的資料表。若要轉換 JSON,您可以使用CTAS或建立檢視。例如,如果您使用的是 陣列,您可以使用 UNNEST選項來扁平化 JSON。另一個選項是使用 AWS Glue ETL支援自訂分類器的任務,將資料轉換為 Amazon S3 中的 parquet,然後在 Athena 中查詢。

MSCK REPAIR TABLE

如需MSCKREPAIRTABLE相關問題的相關資訊,請參閱 MSCK REPAIR TABLE 頁面的 考量與限制故障診斷區段。

輸出問題

無法驗證/建立輸出儲存貯體

如果指定的查詢結果位置不存在,或者如果沒有適當的許可,就會發生此錯誤。如需詳細資訊,請參閱 AWS 知識中心中的如何解決 Amazon Athena 中的「無法驗證/建立輸出儲存貯體」錯誤?

TIMESTAMP 結果為空

Athena 需要 Java TIMESTAMP 格式。如需詳細資訊,請參閱 知識中心中的 AWS 當我在 Amazon Athena 中查詢資料表時,TIMESTAMP結果為空白

以 以外的格式存放 Athena 查詢輸出 CSV

根據預設,Athena 只會以 CSV 格式輸出檔案。若要以不同的格式輸出 SELECT 查詢結果,您可以使用 UNLOAD 陳述式。如需詳細資訊,請參閱UNLOAD。您也可以使用使用format資料表屬性來設定輸出格式的CTAS查詢。與 不同UNLOAD,此CTAS技術需要建立資料表。如需詳細資訊,請參閱 AWS 知識中心中的如何以 以外的格式存放 Athena 查詢輸出CSV,例如壓縮格式?

提供用於儲存查詢結果的 S3 位置無效

如果輸出儲存貯體位置與查詢執行所在的區域不同,則可能會收到此錯誤訊息。若要避免這種情況,請在您執行查詢的區域中指定查詢結果位置。如需這些步驟,請參閱 指定查詢結果位置

Parquet 問題

.GroupColumnIO 無法轉換為 org.apache.parquet.io.PrimitiveColumnIO

此錯誤是由 parquet 結構描述不相符造成。具有非基本類型的資料欄 (例如 array) 已在 AWS Glue中被宣告為基本類型 (例如 string)。若要針對這個問題進行疑難排解,請檢查檔案中的資料結構描述,並將其與 AWS Glue中宣告的結構描述相比較。

Parquet 統計資料問題

當您讀取 Parquet 資料時,您可能會收到下列錯誤訊息:

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.

若要解決此問題,請使用 CREATE TABLEALTER TABLE SET TBLPROPERTIES陳述式將 Parquet SerDe parquet.ignore.statistics 屬性設定為 true,如下列範例所示。

CREATE TABLE 範例

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

ALTER TABLE 範例

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

如需 Parquet Hive 的詳細資訊 SerDe,請參閱 木地板 SerDe

分割問題

MSCK REPAIR TABLE 不會移除過時的分割區

如果您在 Amazon S3 中手動刪除分割區,然後執行 MSCK REPAIR TABLE,您可能會收到來自檔案系統的分割區遺失錯誤訊息。這是因為 MSCKREPAIRTABLE不會從資料表中繼資料中移除過時的分割區。使用 ALTER TABLE DROP PARTITION 以手動移除過時的分割區。如需詳細資訊,請參閱 MSCK REPAIR TABLE 主題中的「疑難排解」一節。

MSCK REPAIR TABLE 失敗

當大量的分割區 (例如,超過 100,000 個) 與特定資料表相關聯時,MSCK REPAIR TABLE 可能會因記憶體限制而失敗。若要解決此限制,請改用 ALTER TABLE ADD PARTITION

MSCK REPAIR TABLE 會偵測分割區,但不會將其新增至 AWS Glue

如果 Amazon S3 路徑為駱駝型而非小寫,或IAM政策不允許 glue:BatchCreatePartition動作,則可能會發生此問題。如需詳細資訊,請參閱 AWS 知識中心中的 MSCK REPAIR TABLE 偵測 Athena 中的分割區,但不將其新增至 AWS Glue Data Catalog

日期格式為 dd-MM-yyyy-HH-mm-ss 或 yyyy-MM-dd 無法運作的分割區投影範圍

若要正常運作,必須將日期格式設定為 yyyy-MM-dd HH:00:00。如需詳細資訊,請參閱《堆疊溢出》帖文:Athena 分割區投影無法如預期般運作

PARTITION BY 不支援 BIGINT類型

將資料類型轉換為 string,然後重試。

沒有可用的有意義分割區

這個錯誤訊息通常表示分割區設定已損毀。若要解決這個問題,請捨棄該資料表,並建立具有新分割區的資料表。

分割區投影無法與範圍分割區搭配使用

檢查時間範圍單位投影.<columnName>.interval.unit 是否符合分割區的分隔符號。例如,如果分割區以天分隔,則小時範圍單位將無法運作。

由連字號指定範圍時的分割區投影錯誤

使用連字號而非逗號指定range資料表屬性會產生錯誤,例如 INVALID_TABLE_PROPERTY:對於輸入字串:"number-number"。確定範圍值以逗號分隔,而非連字號。如需詳細資訊,請參閱整數類型

HIVE_UNKNOWN_ERROR:無法建立輸入格式

一或多個 glue 分割區以不同的格式宣告,因為每個 glue 分割區都有其自己的特定輸入格式。請檢查分割區的定義方式 AWS Glue。

HIVE_PARTITION_SCHEMA_MISMATCH

如果分割區的結構描述與資料表的結構描述不同,查詢可能會失敗,並顯示錯誤訊息 HIVE_PARTITION_SCHEMA_MISMATCH

對於具有分割區資料欄 AWS Glue 的資料目錄內的每個資料表,結構描述會存放在資料表層級,以及資料表內每個分割區的結構描述。分割區的結構描述是由 AWS Glue 爬蟲程式根據其在分割區中讀取的資料範例填入。

當 Athena 執行查詢時,會驗證資料表的結構描述,以及查詢所需的任何分割區的結構描述。驗證會依序比較資料欄資料類型,並確認它們符合重疊的資料欄。這可避免意外的操作,例如從資料表中間新增或移除資料欄。如果 Athena 偵測到分割區的結構描述與資料表的結構描述不同,Athena 可能無法處理查詢,並且會在 HIVE_PARTITION_SCHEMA_MISMATCH 時操作失敗。

您有一些方式可以修正這個問題。首先,如果資料是意外新增,您可以移除造成結構描述中差異的資料檔案,捨棄分割區,並重新編目資料。第二,您可以捨棄個別分割區,然後在 Athena 內執行 MSCK REPAIR,以使用資料表的結構描述重新建立分割區。這個第二個選項只有在您確定套用的結構描述將可繼續正確讀取資料時才適用。

SemanticException 資料表未分割,但分割區規格存在

當未在 CREATE TABLE 陳述式中定義分割區時,就可能會發生此錯誤。如需詳細資訊,請參閱 AWS 知識中心的 Athena? 中的如何對錯誤「FAILED: SemanticException table 未分割,但分割區規格存在」進行故障診斷。

零位元組 _$folder$ 檔案

如果您執行 ALTER TABLE ADD PARTITION 語句並錯誤地指定已存在的分區和不正確的 Simple Storage Service (Amazon S3) 位置,則格式為 partition_value_$folder$ 的零位元組預留位置檔案會在 Simple Storage Service (Amazon S3) 中建立。您必須手動移除這些檔案。

若要防止這種情況發生,請使用 ALTER TABLE ADD PARTITION 陳述式中的 ADD IF NOT EXISTS 語法,如下所示:

ALTER TABLE table_name ADD IF NOT EXISTS PARTITIION […]

從分割資料傳回的零筆記錄

基於各種原因,可能會發生此問題。如需可能的原因和解決方法,請參閱我在 Amazon Athena 中使用定義的分割區建立資料表,但當我查詢資料表時,知識中心中會傳回零筆記錄。 AWS

另請參閱HIVE_TOO_MANY_OPEN_PARTITIONS

許可

查詢 Amazon S3 時存取遭拒錯誤

如果您沒有讀取儲存貯體中資料的許可、寫入結果儲存貯體的許可,或是 Simple Storage Service (Amazon S3) 路徑包含 us-east-1.amazonaws.com 之類的區域端點,就可能發生此狀況。如需詳細資訊,請參閱 AWS 知識中心中的當我執行 Athena 查詢時,收到「存取遭拒」錯誤

使用狀態碼拒絕存取:在 Amazon S3 中對加密資料執行DDL查詢時出現 403 錯誤 Amazon S3

如果下列條件為 true,則您可能會收到錯誤訊息 Access Denied (服務:Amazon S3;狀態碼:403;錯誤碼: AccessDenied;請求 ID:<request_id>)

  1. 您可以執行類似 ALTER TABLE ADD PARTITION或 的DDL查詢MSCK REPAIR TABLE

  2. 你有一個儲存貯體,其具有設定為使用 SSE-S3預設加密

  3. 該儲存貯體也有如下所示的儲存貯體政策,其會強制 PutObject 要求來指定 PUT 標頭 "s3:x-amz-server-side-encryption": "true""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" } } } ] }

在這種情況下,建議的解決方案是移除像上面那樣的儲存貯體政策,因為儲存貯體的預設加密已經存在。

在另一個帳戶中查詢 Amazon S3 儲存貯體時發生存取遭拒,狀態碼:403

當您嘗試查詢由另一個 撰寫的日誌 AWS 服務 ,而第二個帳戶是儲存貯體擁有者,但沒有儲存貯體中的物件時,可能會發生此錯誤。如需詳細資訊,請參閱當我在 知識中心查詢另一個帳戶中的儲存貯體時,在 Amazon Athena 中取得「存取遭拒,狀態碼為:403」的 Amazon S3 例外 Amazon Athena狀況。 AWS

使用IAM角色登入資料連線至 Athena JDBC驅動程式

您可以擷取角色的臨時登入資料,以驗證JDBC與 Athena 的連線。臨時憑證的使用壽命上限為 12 小時。如需詳細資訊,請參閱 AWS 知識中心中的如何使用我的IAM角色登入資料或使用JDBC驅動程式連線至 Athena 時切換到其他IAM角色?

查詢語法問題

FAILED: NullPointerException 名稱為 null

如果您使用 AWS Glue CreateTableAPI操作或 AWS CloudFormation AWS::Glue::Table 範本來建立資料表,以便在 Athena 中使用,而不指定 TableType 屬性,然後執行類似 SHOW CREATE TABLE或 的DDL查詢MSCK REPAIR TABLE,則會收到錯誤訊息FAILED: NullPointerException Name 為 null

若要解決錯誤,請在API呼叫或AWS CloudFormation 範本中 AWS Glue CreateTable指定 TableInput TableType 屬性的值。TableType 可能的值包括 EXTERNAL_TABLEVIRTUAL_VIEW

此要求僅適用於使用 CreateTableAPI操作或 AWS::Glue::Table 範本建立資料表 AWS Glue 時。如果您使用DDL陳述式或 AWS Glue 爬蟲程式建立 Athena 的資料表,則會自動為您定義 TableType 屬性。

未註冊函數

當您嘗試使用 Athena 不支援的函數時,就會發生這個錯誤。如需 Athena 支援的函數清單,請參閱 Amazon Athena 中的函數 或在查詢編輯器中執行 SHOW FUNCTIONS 陳述式。您也可以撰寫自己的使用者定義函數 (UDF)。如需詳細資訊,請參閱 AWS 知識中心中的如何解決 Athena 中的「未註冊函數」語法錯誤?

GENERIC_INTERNAL_ERROR 例外狀況

GENERIC_INTERNAL_ERROR 例外狀況可能有各式各樣的原因,其中包括下列原因:

  • GENERIC_INTERNAL_ERROR:空 – 在下列任一情況下,您可能會看到此例外狀況:

    • 資料表定義中的資料欄的資料類型與資料集的實際資料類型之間存在結構描述不相符。

    • 您正在執行語法不正確的 CREATE TABLE AS SELECT(CTAS) 查詢。

  • GENERIC_INTERNAL_ERROR:父系建置器為 null – 當您查詢具有資料類型 欄的資料表,且您正在使用 O penCSVSerDe 程式庫時array,可能會看到此例外狀況。O penCSVSerde 格式不支援 array資料類型。

  • GENERIC_INTERNAL_ERROR:值超過 MAX_INT – 當來源資料欄以資料類型定義,INT且數值大於 2,147,483,647 時,您可能會看到此例外狀況。

  • GENERIC_INTERNAL_ERROR:值超過 MAX_BYTE – 當來源資料欄的數值超過資料類型 的允許大小時,您可能會看到此例外狀況BYTE。資料類型 BYTE 相當於 TINYINTTINYINT 是以兩的補數格式表示的 8 位元帶正負號的整數,最小值為 -128 以及最大值為 127。

  • GENERIC_INTERNAL_ERROR:分割區值的數量不符合篩選條件的數量 – 如果您在 Amazon Simple Storage Service(Amazon S3) 資料上有不一致的分割區,您可能會看到此例外狀況。在下列任種情況下,您可能有不一致的分割區:

    • Simple Storage Service (Amazon S3) 上的分割區已變更 (例如:已新增新的分割區)。

    • 資料表中的分割區資料欄數目與分割區中繼資料中的資料欄數目不相符。

如需這些錯誤的詳細資訊,請參閱 AWS 知識中心中的如何在 Amazon Athena 中查詢資料表時解決錯誤 "GENERICINTERNAL__ERROR"?

相符群組的數目與資料欄數不符

當您在 CREATE TABLE 陳述式正則表 SerDe中使用 ,且 regex 比對群組的數量與您為資料表指定的資料欄數量不相符時,就會發生此錯誤。如需詳細資訊,請參閱 AWS 知識中心中的如何解決 amazon Athena 中的 RegexSerDe 錯誤「比對群組數量與資料欄數量不相符」?

queryString 無法滿足限制條件:成員的長度必須小於或等於 262144

Athena 中查詢字串長度上限 (262,144 位元組) 不是可調整的配額。 AWS Support 無法增加您的配額,但您可以透過將長查詢分割為較小的查詢來解決問題。如需詳細資訊,請參閱 AWS 知識中心中的如何在 Athena 中增加最大查詢字串長度?

SYNTAX_ERROR:無法解析資料欄

當您從具有位元組順序標記 (BOM) 的 UTF-8 編碼CSV檔案中查詢 AWS Glue 爬蟲程式建立的資料表時,可能會發生此錯誤。 AWS Glue 無法辨識 BOMs,並將它們變更為 Amazon Athena 無法辨識的問號。解決方案是移除 Athena 或 AWS Glue中的問號。

函數呼叫的引數過多

在 Athena 引擎版本 3 中,函數接受的引數不能超過 127 個。此限制由設計所致。如果您使用具有 127 個以上參數的函數,則會出現如下錯誤訊息:

TOO_MANY_ARGUMENTS: 行 nnnnn: 函數呼叫 function_name() 的引數過多

要解決此問題,請在每次函數呼叫中減少參數的使用。

查詢逾時問題

如果您的 Athena 查詢遇到逾時錯誤,請檢查您的 CloudTrail 日誌。查詢可能會因調節 AWS Glue 或 Lake Formation 而逾時APIs。發生這些錯誤時,對應的錯誤訊息可能會指出查詢逾時問題,而不是限流問題。若要對問題進行故障診斷,您可以在聯絡之前檢查 CloudTrail 日誌 AWS Support。如需詳細資訊,請參閱 查詢 AWS CloudTrail 日誌記錄 Amazon Athena API 電話 AWS CloudTrail

如需有關呼叫 時聯合查詢的查詢逾時問題的資訊ListTableMetadataAPI,請參閱 呼叫時逾時 ListTableMetadata

調節問題

如果您的查詢超過 Amazon S3 AWS KMS AWS Glue、 或 等相依服務的限制 AWS Lambda,則預期會發生下列訊息。若要解決這些問題,請減少來自相同帳戶的並行呼叫數目。

服務 錯誤訊息
AWS Glue AWSGlueException:超過速率。
AWS KMS 您已超過呼叫 的速率KMS。減少通話的頻率。
AWS Lambda

已超過費率

TooManyRequestsException

Amazon S3 AmazonS3Exception︰請降低請求率。

如需有關在使用 Athena 時防止 Amazon S3 限流的方法的資訊,請參閱 防止 Amazon S3 限流

檢視

在 Apache Hive Shell 中建立的檢視在 Athena 中無法運作

由於其實作方式完全不同,在 Apache Hive Shell 中建立的檢視與 Athena 不相容。若要解決此問題,請在 Athena 中重新建立檢視。

檢視已過時;必須重新建立

如果作為檢視基礎的資料表已變更或遭到捨棄,您可能會收到此錯誤。解決方案是重新建立檢視。如需詳細資訊,請參閱 AWS 知識中心中的如何解決 Athena 中的「檢視過時;必須重新建立」錯誤?

工作群組

如需針對工作群組問題進行疑難排解的相關資訊,請參閱對工作群組錯誤進行故障診斷

其他資源

以下頁面提供針對 Amazon Athena 問題進行疑難排解的其他資訊。

下列 AWS 資源也可以提供幫助:

疑難排解通常需要專家或小幫手社群的反覆查詢和探索。如果您在嘗試此頁面上的建議後仍遇到問題,請聯絡 AWS Support (在 中 AWS Management Console,按一下支援支援中心) 或使用 Amazon Athena 標籤在 AWS re:Post 上提出問題。