Athena の「入力形式を作成できません」というエラーを解決する方法を教えてください。

最終更新日: 2021 年 5 月 14 日

Amazon Athena でクエリを実行すると、「入力形式を作成できません」というエラーが表示されます。

解決方法

このエラーには複数の原因があります。一般的なシナリオと解決策は次のとおりです。

AWS Glue クローラーがデータ形式を分類できない

  • データは Amazon Simple Storage Service (Amazon S3) に保存されます。
  • 組み込みの分類子を使用して AWS Glue クローラーを実行し、テーブルスキーマを検出します。クローラーは UNKNOWN の分類を返します。少なくとも 1 つの列が検出されましたが、スキーマが正しくありません。
  • Athena からテーブルをクエリすると、そのクエリは「HIVE_UNKNOWN_ERROR: 入力形式を作成できません」というエラーで失敗します。

このエラーを解決するには、組み込みの分類子でサポートされているデータ型を使用します。組み込みの分類子でデータ形式を分類できない場合は、カスタム分類子の使用を検討してください。

Athena がデータ形式をサポートしていない

  • データは Amazon S3 に保存されます。
  • クローラーを実行してテーブルを作成します。クローラーは、ionxml など、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 がテーブルスキーマを定義することに注意してください。SerDe は、テーブルの作成時に Athena で指定した DDL 設定を上書きできます。

テーブル定義のプロパティを更新するには、次の手順を実行してください。

  1. AWS Glue コンソールを開きます。
  2. 更新するテーブルを選択します。
  3. [Action] (アクション)、[View details] (詳細を表示) の順にクリックします。
  4. [Edit table] (テーブルを編集) を選択します。
  5. 入力形式出力形式、または Serde 名の設定を更新します。
  6. [Apply] (適用) を選択します。

Athena クエリのデータソースがサポートされていない

Athena では、対象のテーブルが Amazon S3 に格納されている場合にのみ、テーブルのクエリがサポートされます。Athena でサポートされていないデータソースをクエリすると、「入力形式を作成できません」というエラーが表示されることがあります。

このエラーを解決するには、Athena Query Federation SDK を使用します。SDK では、独自のコードを使用して Athena をカスタマイズできます。Athena Federation SDK を使用すると、さまざまなデータソースや独自のデータ形式と統合できます。また、新しいユーザー定義関数を構築することもできます。詳細については、Amazon Athena の新しい横串検索を使用してデータソースをクエリするを参照してください。


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


請求に関するサポートまたは技術サポートが必要ですか?