解決 Athena 的問題 - Amazon Athena

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

解決 Athena 的問題

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

CREATETABLE作為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:打開蜂巢拆分時出錯 s3://amzn-s3-demo-bucket

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

HIVECURSOR_ERROR: 亞馬遜 3 例外:指定的密鑰不存在

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

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 節中的常見問題 GitHub,或參閱個別 Athena 資料來源連接器的說明文件。

NULL或嘗試讀取數據時出現不正確的JSON數據錯誤

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

HIVE_ BAD _DATA:剖析欄位 0 的欄位值時發生錯誤:字串無法轉換為組合。 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 Config Athena 讀取檔案時,如何解決「HIVECURSOR_ _ ERRORJSONException: Row 不是有效的JSON物件-: 重複索引鍵」? 在 AWS 知識中心。

HIVECURSOR_ 帶有漂亮印ERROR刷的消息 JSON

蜂巢 JSON SerDe和程式OpenX JSON SerDe庫預期每個JSON文件都位於單行文字上,且記錄中的欄位之間沒有行終止字元。如果JSON文本是漂亮的打印格式,你可能會收到一個錯誤消息,如 HIVECURSOR_ _ERROR: 行不是一個有效的JSON對象HIVECURSOR_ _ ERROR JsonParseException: 意外 end-of-input:OBJECT當您嘗試查詢表後,預期關閉標記,當你創建它。如需詳細資訊,請參閱上 GitHub的 OpenX SerDe 文件中的資JSON料檔案。

多個JSON記錄返回 1 SELECT COUNT 的 a

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

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

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

MSCK REPAIR TABLE

如需MSCKREPAIRTABLE相關問題的詳細資訊,請參閱MSCK REPAIR TABLE故障診斷面的考量與限制和章節。

輸出問題

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

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

TIMESTAMP結果為空

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

將 Athena 查詢輸出儲存為以外的格式 CSV

依預設,Athena 只會以CSV格式輸出檔案。若要以不同的格式輸出 SELECT 查詢結果,您可以使用 UNLOAD 陳述式。如需詳細資訊,請參閱UNLOAD。您也可以使用使用 format table 屬性的CTAS查詢來設定輸出格式。不同於UNLOAD,該CTAS技術需要創建一個表。如需詳細資訊,請參閱如何以壓縮格式以外CSV的格式儲存 Athena 查詢輸出? 在 AWS 知識中心。

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

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

Parquet 問題

或者. 阿帕奇 .io. GroupColumn無法將 IO 轉換為組織 .apache.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,如下列範例所示。

CREATETABLE例子

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

ALTERTABLE例子

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

如需有關鑲木地板蜂巢的更多資訊 SerDe,請參閱木地板 SerDe

分割問題

MSCKREPAIRTABLE不會移除過時的分割區

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

MSCKREPAIRTABLE失敗

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

MSCKREPAIRTABLE檢測分區,但不將它們添加到 AWS Glue

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

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

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

PARTITIONBY 不支持該BIGINT類型

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

沒有可用的有意義分割區

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

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

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

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

使用連字符而不是逗號指定 range table 屬性會產生類似 INVALID _ TABLE _PROPERTY:對於輸入字符串:」number-number。 確保範圍值用逗號分隔,而不是連字符。如需詳細資訊,請參閱整數類型

HIVE_ UNKNOWN _ERROR: 無法建立輸入格式

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

HIVE_PARTITION_SCHEMA_MISMATCH

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

對於具有分割區 AWS Glue 資料行的「資料目錄」中的每個表格,結構定義會儲存在表格層級以及表格中的每個個別分割區。 AWS Glue 爬行者程式會根據分割區內讀取的資料樣本,填入分割區的結構描述。

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

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

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

當未在 CREATE TABLE 陳述式中定義分割區時,就可能會發生此錯誤。如需詳細資訊,請參閱如何疑難排解 Athena 中的錯誤「FAILED:資料 SemanticException 表未分割但分割區規格存在」? 在 AWS 知識中心。

零位元組 _$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;狀態碼:403;錯誤碼: AccessDenied;請求識別碼:<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 服務 帳戶寫入的記錄檔,而第二個帳戶是值區擁有者,但不擁有值區中的物件時,就會發生此錯誤。如需詳細資訊,請參閱當我在知識中心查詢另一個帳戶中的儲存貯體或觀看 AWS 知識中心影片時,在 Amazon Athena 收到 Amazon S3 例外狀況「拒絕存取,且狀態碼為:403」。

使用IAM角色認證連線至 Athena JDBC 驅動程式

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

查詢語法問題

FAILED: NullPointerException 名稱為空

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

若要解決錯誤,請指定TableInputTableType屬性值做為 AWS Glue CreateTableAPI呼叫或AWS CloudFormation 範本的一部分。TableType 可能的值包括 EXTERNAL_TABLEVIRTUAL_VIEW

只有當您使用 AWS Glue CreateTableAPI作業或AWS::Glue::Table範本建立資料表時,此需求才適用。如果您使用DDL陳述式或 AWS Glue 爬行者程式為 Athena 建立資料表,系統會自動為您定義TableType屬性。

未註冊函數

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

GENERIC_ INTERNAL _ ERROR 例外

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

  • GENERIC_ INTERNAL _ERROR:Null — 在下列任一情況下,您可能會看到此例外狀況:

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

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

  • GENERIC_ INTERNAL _ERROR:父生成器為 null-當您查詢具有數據類型列的表array,並且使用 O penCSVSer De 庫時,您可能會看到此異常。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 簡單儲存服務 (Amazon S3) 資料上的分區不一致,您可能會看到此例外狀況。在下列任種情況下,您可能有不一致的分割區:

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

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

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

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

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

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 個以上參數的函數,則會出現如下錯誤訊息:

TOOMANY_ARGUMENTS:行 nnn:nn:函數調用的參數太多 function_name().

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

查詢逾時問題

如果您的 Athena 查詢發生逾時錯誤,請檢查您的 CloudTrail 記錄。查詢可能會因為節流 AWS Glue 或 Lake Formation 而逾時。APIs發生這些錯誤時,對應的錯誤訊息可能會指出查詢逾時問題,而不是限流問題。要解決此問題,您可以在聯繫之前檢查 CloudTrail 日誌 AWS Support。如需詳細資訊,請參閱 Query AWS CloudTrail 日誌記錄 Amazon Athena API 電話 AWS CloudTrail

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

調節問題

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

服務 錯誤訊息
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 中重新建立檢視。

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

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

工作群組

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

其他資源

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

以下 AWS 資源也可能有所幫助:

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