以下のように、extract_timestamp (yyyy-mm-dd hh:mm:ss) で分割された外部ハイブ テーブルの従業員があります。
empid empname extract_time
1 abc 2019-05-17 00:00:00
2 def 2019-05-18 14:21:00
extract_time でパーティションを削除し、年、月、日のパーティションに変更しようとしています。これについては、以下の方法に従っています。
1. year month と day のパーティションを持つ新しいテーブル employee_new を作成します。
create external table employee_new
(empid int,
empname string
)
partitioned by (year int,month int,day int)
location '/user/emp/data/employee_new.txt';
2. employee テーブルからデータを選択して、employee_new に上書きを挿入します。
insert overwrite into employee_new as select*,year(extract_time),month(extract_time)
,day(extract_time)
from employee
3. employee と employee_new を削除し、/user/emp/data/employee_new.txt の上に employee テーブルを作成します。
この方法が効率的かどうか、また同じことを行うより良い方法があれば教えてください。