配置单元覆盖新S3位置的表

时间:2019-08-13 04:45:59

标签: amazon-s3 hive insert overwrite

我有一个配置单元外部表指向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/';

1 个答案:

答案 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'
相关问题