我有一个配置单元外部表指向s3上的某个位置。我的要求是,我每天都会将一个新文件上传到此s3位置,并且我的蜂巢表中的数据应被覆盖。
每天,我的脚本都会在“ s3:// employee-data /”下创建一个文件夹,并在其中放置一个csv文件。 例如。 s3://employee-data/20190812/employee_data.csv
现在,我希望我的配置单元表每天都在新文件夹下拾取此新文件,并覆盖现有数据。我可以通过ETL获得文件夹名称-'20190812'。
有人可以帮忙吗
我尝试了ALTER表设置位置“新位置”。但是,这不会覆盖数据。
create external table employee
{
name String,
hours_worked Integer
}
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 's3://employee-data/';
答案 0 :(得分:0)
设置新位置,即可访问数据:
ALTER table set location 's3://employee-data/20190812/';
此语句将表指向新位置,当然不会覆盖任何内容。
或者将表分区:
create external table employee
(
name String,
hours_worked Integer
)
partitioned by (load_date string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 's3://employee-data/';
然后做ALTER TABLE employee recover partitions;
,所有日期都将安装在单独的分区中,您可以使用
进行查询WHERE load_date='20190812'