Athena で CSV データをクエリすると、フィールド X で「HIVE_BAD_DATA: フィールド値の解析エラー: 入力文字列: ""」というエラーが表示されます。

最終更新日: 2020 年 3 月 30 日

Amazon Athena で CSV データをクエリすると、次のようなエラーが表示されます。

Your query has the following error(s):
HIVE_BAD_DATA: Error parsing field value '' for field 0: For input string: ""
This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: b99xxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

簡単な説明

このエラーには複数のバージョンがあります。エラーメッセージに値 ("入力文字列: "12312845691" など) が含まれる場合、ファイルのデータタイプがスキーマで予期されるデータと一致しません。詳細については、Amazon Athena クエリが失敗し、エラー「HIVE_BAD_DATA: フィールド X のフィールド値の解析エラー: 入力文字列: "12312845691"」が発生するを参照してください。

null または空の入力文字列を指定するエラー ("入力文字列: "") は、次の両方に該当する場合に発生します。

  • お客様は OpenCSVSerDe で Athena を使用しています。ソースデータではデフォルトの引用文字として二重引用符 (") が使用されます。
  • ソースデータに null 値 ("") または空のセルが含まれています。

たとえば、次のデータは「フィールド値の解析エラー」を返します。

"1","1","a3","a4"
"","2","a3","def"
"1","3","abc3","ab4"

解決方法

各列を STRING として定義します。Athena のパーサーは、検索内容に基づいて STRING の値を実際のタイプに解析します。これにより、null 値 (二重引用符とスペースなしの空の文字列) または空のセル (値または二重引用符なし) が見つかったときに Athena がエラーをスローすることを防ぎます。Athena が CSV ファイルを処理する詳細方法については、CSV を処理するための OpenCSVSerDe を参照してください。

null または空の値を持つ列に特定のデータタイプを使用するには、CAST を使って列を目的のタイプに変換します。

1.    テーブルを作成し、各列を STRING として定義します。

CREATE EXTERNAL TABLE myopencsvtable_example (
   col1 string,
   col2 string,
   col3 string,
   col4 string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   'separatorChar' = ',',
   'quoteChar' = '"',
   'escapeChar' = '\\'
   )
STORED AS TEXTFILE
LOCATION 's3://awsexamplebucket/';

2.    テーブルのクエリを実行します。

select * from myopencsvtable_example

出力例:

     col1     col2    col3      col4
1    1        1       a3        a4
2             2       a3        def
3    1        3       abc3      ab4

3.    INT として "col1" をキャストし、null 値 ("") のデフォルト値を出力します。

SELECT COALESCE(TRY(CAST(col1 AS integer)),0) as cast_column,* from myopencsvtable_example

出力例:

     cast_column    col1    col2     col3      col4
1    1              1       1        a3        a4
2    0                      2        a3        def
3    1              1       3        abc3      ab4 

この記事はお役に立ちましたか?

改善できることはありますか?


さらにサポートが必要な場合