Amazon Athena で ALTER TABLE ADD PARTITION を実行すると、次のエラーが表示されます: 「失敗: SemanticExceptionテーブルはパーティション化されていないが、パーティション仕様は存在する」。
解像度
このエラーは、CREATE TABLE ステートメントでパーティションを定義しなかった場合に発生します。このエラーを解決するには、次のいずれかの操作を行います:
- テーブルを再作成し、PARTIONED BY を使用してパーティションキーを定義します。
- テーブルスキーマを編集します。
テーブルを再作成
テーブルを再作成し、PARTITIONED BY を使用してパーティションキーを定義します。例については、「テーブルの作成」を参照してください。パーティションを定義したら、ALTER TABLE ADD PARTITION を使用してパーティションをさらに追加できます。
たとえば、次のデータ定義言語 (DDL) を使用して、年、月、日の 3 つのパーティションを持つテーブルを作成するとします:
CREATE EXTERNAL TABLE test (
requestBeginTime string,
adId string,
...)
PARTITIONED BY (
year string,
month string,
day string
)
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://.../' ;
次に、次のようなパーティションを追加します:
ALTER TABLE impressions ADD
PARTITION (year = '2016', month = '05', day='04') LOCATION 's3://mystorage/path/to/data\_14\_May\_2016/';
テーブルスキーマの編集
AWS Glue でテーブルスキーマを編集するには、次の手順を実行します:
- AWS Glue コンソールを開きます。
- リスト内のテーブル名を選択し、[スキーマの編集] を選択します。
- [列を追加] を選択します。
- 列名、タイプ、および番号を入力します。次に、「パーティションキー」 ボックスをチェックします。
- [追加] を選択します。
詳細については、「テーブルの詳細の表示と編集」を参照してください。