我下面有一个现有的表emp,它的分区列为as_of_date(current_date-1)。
CREATE EXTERNAL TABLE IF NOT EXISTS emp(
student_ID INT,
name STRING)
partitioned by (as_of_date date)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/emp';
下面是现有分区的路径
user/emp/as_of_date=2021-09-02
user/emp/as_of_date=2021-09-03
user/emp/as_of_date=2021-09-04
在emp表中,我必须添加新的分区列作为businessdate(current_date),并将分区列(as_of_date)更改为非分区列。
预期输出如下。
describe table emp;
CREATE EXTERNAL TABLE IF NOT EXISTS emp(
student_ID INT,
Name STRING,
as_of_date date)
partitioned by (businessdate date)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/emp';
更新后,下面将是hdfs路径
user/emp/buinessdate=2021-09-03
user/emp/buinessdate=2021-09-04
user/emp/businessdate=2021-09-05
预期输出表:
|student_ID |name |as_of_date | business_date |
|--| --- | --- |----|
|1 | Sta |2021-09-02| 2021-09-03 |
|2 |Danny|2021-09-03| 2021-09-04 |
|3 |Elle |2021-09-04| 2021-09-05 |
1条答案
按热度按时间lf5gs5x21#
创建新表、从旧表加载数据、删除旧表、重命名新表。
--1创建新表emp 1
--2将数据从emp加载到emp 1,计算新的分区列
现在,您可以删除旧表(使其也首先托管到删除位置),并在必要时重命名新表。