Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
如何解決在 Athena 中查詢資料表時出現的 "GENERIC_INTERNAL_ERROR" 錯誤?
當我查詢 Amazon Athena 資料表時,我收到 "GENERIC_INTERNAL_ERROR" 錯誤。
解決方法
"GENERIC_INTERNAL_ERROR: null"
欄資料類型不相符
請確定資料表定義中的欄資料類型與來源資料中的欄資料類型相容。Athena 使用讀取模式技術。當 Athena 處理查詢時,它會將您的資料表定義套用至 Amazon Simple Storage Service (Amazon S3) 中的資料。
例如,當您在 Apache Parquet 檔案中建立資料表時,Athena 會從該檔案讀取架構。然後,Athena 會根據您查詢 Parquet 的資料表定義驗證架構。如果欄的資料類型與資料表定義的資料類型不相符,那麼您會收到 "Column data type mismatch" 錯誤。
如果來源資料檔案和資料表定義之間存在架構不相符,請執行下列其中一個動作:
- 使用 AWS Glue 更新架構。
- 使用更新後的資料表定義建立新資料表。
另外,檢查來源資料檔案是否損壞。如果發現損壞的來源資料檔案,則刪除該檔案並查詢資料表。
語法不準確
當以下兩個條件都成立時,您可能會收到 "GENERIC INTERNAL ERROR: null" 錯誤:
- 您使用 CTAS 查詢建立了該資料表。
- 您對 partitioned_by 和 bucketed_by 資料表屬性使用了相同的欄名稱。
使用 CTAS 查詢時,必須對 partitioned_by 和 bucketed_by 屬性使用不同的欄名稱。若要解決此問題,請建立一個新資料表,並為 partitioned_by 和 bucketed_by 選擇不同的欄名稱。
"GENERIC_INTERNAL_ERROR: parent builder is null"
當您查詢具有 array 欄且使用 OpenCSVSerde 格式的資料表時,就可能會發生此錯誤。OpenCSVSerde 格式不支援 array 資料類型。
若要解決此問題,請將資料類型為 array 的欄變更為 string。您可以使用 AWS Glue 主控台,也可以執行命令來修改欄的資料類型。或者,建立一個新資料表。
修改欄的資料類型
若要使用 AWS Glue 主控台,請完成以下步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇資料表。
- 選取您要更新的表。
- 選擇動作,然後選擇檢視詳情。
- 選擇 Edit schema (編輯架構)。
- 找出資料類型為 array 的欄,然後選擇 array。
- 在 Column type (欄類型),於下拉式清單中選取 string。
- 選擇 Update (更新)。
- 在 Edit schema (編輯架構) 頁面上,選擇 Save (儲存)。
-或-
執行 SHOW CREATE TABLE 命令來產生建立該資料表的查詢。找到資料類型為 array 的欄,然後將資料類型變更為 string。
建立新資料表
建立新資料表,然後選擇 string 作為欄資料類型。
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_INT"
當來源 INT 欄中儲存格的數值大於 2,147,483,647 時,就可能會出現此錯誤。
若要解決此問題,請將資料類型為 int 的欄變更為 bigint。您可以使用 AWS Glue 主控台,也可以執行命令來修改欄的資料類型。或者,建立一個新資料表。
修改欄的資料類型
若要使用 AWS Glue 主控台,請完成以下步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇資料表。
- 選取您要更新的表。
- 選擇動作,然後選擇檢視詳情。
- 選擇 Edit schema (編輯架構)。
- 找到資料類型為 int 的欄,然後選取 int。
- 在 Column type (欄類型),於下拉式清單中選取 bigint。
- 選擇 Update (更新)。
- 在 Edit schema (編輯架構) 頁面上,選擇 Save (儲存)。
-或-
執行 SHOW CREATE TABLE 命令來產生建立該資料表的查詢。找到資料類型為 int 的欄,然後將資料類型變更為 bigint。
建立新資料表
建立新資料表,然後選擇 bigint 作為欄資料類型。
"GENERIC_INTERNAL_ERROR: Value exceeds MAX_BYTE"
當來源 TINYINT 欄中的儲存格具有無效的數值時,您可能會收到此錯誤。TINYINT 欄的最小值為 -128,最大值為 127。
若要解決此問題,請將資料類型為 tinyint 的欄變更為 smallint、int 或 bigint。您可以使用 AWS Glue 主控台,也可以執行命令來修改欄的資料類型。或者,建立一個新資料表。
修改欄的資料類型
若要使用 AWS Glue 主控台,請完成以下步驟:
- 開啟 AWS Glue console (AWS Glue 主控台)。
- 在導覽窗格中,選擇資料表。
- 選取您要更新的表。
- 選擇動作,然後選擇檢視詳情。
- 選擇 Edit schema (編輯架構)。
- 找到資料類型為 tinyint 的欄,然後選擇 tinyinit。
- 在 Column type (欄類型),於下拉式清單中選取 smallint、bigint 或 int。
- 選擇 Update (更新)。
- 在 Edit schema (編輯架構) 頁面上,選擇 Save (儲存)。
-或-
執行 SHOW CREATE TABLE 命令來產生建立該資料表的查詢。找到資料類型為 tinyint 的欄,然後將資料類型變更為 smallint、bigint 或 int。
建立新資料表
建立新資料表,然後選擇 smallint、bigint 或 int 作為欄資料類型。
"GENERIC_INTERNAL_ERROR: Number of partition values does not match number of filters"
當 Amazon S3 資料分區因下列原因而不一致時,您就可能會收到此錯誤:
- 您變更了 S3 分區。例如,您新增了新的分區。
- 資料表中的分區欄數與分區中繼資料中的分區欄數不符。
若要解決此問題,您可以設定 AWS Glue 編目程式來建立新資料表。或者,使用 ALTER TABLE DROP PARTITION 陳述式刪除分區。然後,使用 ALTER TABLE ADD PARTITION 陳述式新增與資料表定義中相同數量的分區。
例如,在資料表定義中有兩個分區欄,分別為 date 和 country,還有一個分區只包含一個名為 date 的欄。刪除包含 date 欄的分區,然後將 date 和 country 分區新增至資料表中。
命令範例:
ALTER TABLE doc_example_table DROP PARTITION (date = '2014-05-14'); ALTER TABLE doc_example_table ADD PARTITION (date = '2016-05-14', country = 'IN');
"GENERIC_INTERNAL_ERROR: Multiple entries with same key"
如果您有相同名稱的欄,那麼您必須預先處理資料,以包含有效的鍵值對。若要忽略相同名稱的欄,請在 org.openx.data.jsonserde.JsonSerDe 中將 ignore.malformed.json 設定為 SERDEPROPERTIES。
Apache Hive 不支援區分大小寫的欄。例如,當您有兩欄,分別命名為 Column 和 column 時,就可能會出現問題。
如果欄名稱相同但大小寫不同,則必須使用對映射,並將 JSON SerDe 設定為不區分大小寫。
命令範例:
CREATE TABLE mytable ( time1 string, time2 string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' WITH SERDEPROPERTIES ( "case.insensitive" = "false", --tells hive to ignore key case "mapping.time1"= "time", -- lowercase 'time' mapped into 'time1' "mapping.time2"= "Time") -- uppercase to 'time2'
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 1 年前
- 已提問 3 年前
AWS 官方已更新 6 個月前