Amazon Athena でクエリを実行すると、「入力形式を作成できません」というエラーが表示されます。
解決方法
このエラーには複数の原因があります。一般的なシナリオと解決策は次のとおりです。
AWS Glue クローラーがデータ形式を分類できない
- データは Amazon Simple Storage Service (Amazon S3) に保存されます。
- 組み込みの分類子を使用して AWS Glue クローラーを実行し、テーブルスキーマを検出します。クローラーは UNKNOWN の分類を返します。少なくとも 1 つの列が検出されましたが、スキーマが正しくありません。
- Athena からテーブルをクエリすると、そのクエリは「HIVE_UNKNOWN_ERROR: 入力形式を作成できません」というエラーで失敗します。
このエラーを解決するには、組み込みの分類子でサポートされているデータ型を使用します。組み込みの分類子でデータ形式を分類できない場合は、カスタム分類子の使用を検討してください。
Athena がデータ形式をサポートしていない
- データは Amazon S3 に保存されます。
- クローラーを実行してテーブルを作成します。クローラーは、ion や xml など、Athena がサポートしていない形式でテーブルを分類します。
- Athena からテーブルをクエリすると、そのクエリは「HIVE_UNKNOWN_ERROR: 入力形式を作成できません」というエラーで失敗します。
このエラーを解決するには、Athena がサポートするデータ形式を使用します。
1 つ以上の AWS Glue テーブル定義プロパティが空である
- AWS Glue のテーブルは、Athena または AWS Glue クローラーによって作成されていません。テーブルは、他の方法を使用して作成されます。例えば、テーブルは AWS Glue コンソールで手動で作成されます。
- Athena からテーブルをクエリすると、そのクエリは「HIVE_UNKNOWN_ERROR: 入力形式を作成できません」というエラーで失敗します。
このエラーは、AWS Glue テーブル定義の次のプロパティの 1 つ以上が空であるために発生します。
これらのプロパティが SerDe およびデータ形式に対して正しく設定されていることを確認してください。指定する SerDe がテーブルスキーマを定義することに注意してください。SerDe は、テーブルの作成時に Athena で指定した DDL 設定を上書きできます。
テーブル定義のプロパティを更新するには、次の手順を実行してください。
- AWS Glue コンソールを開きます。
- 更新するテーブルを選択します。
- [Action] (アクション)、[View details] (詳細を表示) の順にクリックします。
- [Edit table] (テーブルを編集) を選択します。
- 入力形式、出力形式、または Serde 名の設定を更新します。
- [Apply] (適用) を選択します。
Athena クエリのデータソースがサポートされていない
Athena では、対象のテーブルが Amazon S3 に格納されている場合にのみ、テーブルのクエリがサポートされます。Athena でサポートされていないデータソースをクエリすると、「入力形式を作成できません」というエラーが表示されることがあります。
このエラーを解決するには、Athena Query Federation SDK を使用します。SDK では、独自のコードを使用して Athena をカスタマイズできます。Athena Federation SDK を使用すると、さまざまなデータソースや独自のデータ形式と統合できます。また、新しいユーザー定義関数を構築することもできます。詳細については、Amazon Athena の新しい横串検索を使用してデータソースをクエリするを参照してください。
関連情報
クローラーへの分類子の追加
SerDe の使用