0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Athena】一度作ったテーブルの定義を変更する

Posted at

概要

【Athena】S3ファイルを参照するクエリを作成するなどしてAWS Athenaで作ったテーブルの定義は、直接編集する手段が無さそう。DDL文を出力・編集して再度実行するよう、対応します。

既存テーブルのDDL文を出力する

Athenaのクエリエディタにて、サイドバーからテーブルの「︙」マークをクリックし、テーブルDDLを作成を実行します。
image.png

クエリエディタに以下SQLを書いて実行しても同じ結果が得られます。

SHOW CREATE TABLE `t_something`; -- テーブル名は適宜、手元の内容に応じて変更のこと

上記により、クエリエディタの結果欄にCREATE TABLE文(DDL)が吐き出されているので、コピーします。後の手順でテーブルの削除を行うので、コピーしたDDL文はクエリエディタもしくは別途テキストエディタにペーストしておくと安心です。
image.png

今回の事例では、以下のようなDDL文が吐き出されたと仮定して進めます。

CREATE EXTERNAL TABLE `t_something`(
  `id` varchar(40), 
  `no` varchar(40)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://some-bucket/cleansing-data'
TBLPROPERTIES (
  'classification'='csv', 
  'transient_lastDdlTime'='1733349313')

既存テーブルを削除し、新しいDDL文を実行する

サイドバーから該当テーブルの「︙」マークをクリックするか、以下SQLをクエリエディタで実行して既存テーブルを削除します。

DROP TABLE `t_something`;

その後、クエリエディタにて必要なDDL文編集を行い、実行します。これにより、新しい定義にてテーブルが作成されます。たとえば以下SQLでは、先の手順で吐き出した既存テーブルのDDL文に対して、CSVヘッダ行をスキップするプロパティを追加しています。

CREATE EXTERNAL TABLE `t_something`(
  `id` varchar(40), 
  `no` varchar(40)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://some-bucket/cleansing-data'
TBLPROPERTIES (
  'classification'='csv', 
  'skip.header.line.count'='1', -- S3から読み込む際、ヘッダ行をスキップするプロパティを追加
  'transient_lastDdlTime'='1733349313')

ここまでの作業で、新しく作成されたテーブルにて、変更内容が反映されているはず。

トラブルシューティング

コピーしたDDL文を編集・再実行時にエラー FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. AlreadyExistsException(message:Table table_name already exist)

DROP TABLEの実行忘れ。既存テーブルの削除を行ってから、改訂したDDL文を実行してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?