hive用新的s3位置覆盖表

vwkv1x7d  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(557)

我有一个配置单元外部表指向s3上的一个位置。我的要求是我将上传一个新的文件到这个s3位置每天和我的配置单元表中的数据应该被覆盖。
我的脚本每天都会在“s3://employee data/”下创建一个文件夹,并在其中放置一个csv文件。例如s3://employee data/20190812/employee\u data.csv
现在我希望我的配置单元表每天在新文件夹下提取这个新文件并覆盖现有数据。我可以通过etl获取文件夹名-“20190812”。
有人能帮忙吗。
我尝试将表集位置改为“new location”。但是,这不会覆盖数据。

create external table employee
    {
        name String,
        hours_worked Integer
    }
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    LOCATION 's3://employee-data/';
3duebb1j

3duebb1j1#

设置新位置,即可访问数据:

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分区;
所有日期都将被挂载在不同的分区中,您可以使用

WHERE load_date='20190812'

相关问题