Hive 用新的 s3 位置覆盖 table
Hive overwrite table with new s3 location
我有一个配置单元外部 table 指向 s3 上的一个位置。我的要求是我每天都会将一个新文件上传到这个 s3 位置,并且我的配置单元 table 中的数据应该被覆盖。
我的脚本每天都会在 's3://employee-data/' 下创建一个文件夹,并在其中放置一个 csv 文件。
例如。 s3://employee-data/20190812/employee_data.csv
现在我希望我的蜂巢 table 每天在新文件夹下获取这个新文件并覆盖现有数据。我可以通过我的 ETL 获取文件夹名称 - '20190812'。
谁能帮忙。
我尝试了 ALTER table 设置位置 'new location'。但是,这不会覆盖数据。
create external table employee
{
name String,
hours_worked Integer
}
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 's3://employee-data/';
设置新位置,即可访问数据:
ALTER table set location 's3://employee-data/20190812/';
此语句指向 table 新位置,当然没有任何内容被覆盖。
或者将 table 分区:
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'
我有一个配置单元外部 table 指向 s3 上的一个位置。我的要求是我每天都会将一个新文件上传到这个 s3 位置,并且我的配置单元 table 中的数据应该被覆盖。
我的脚本每天都会在 's3://employee-data/' 下创建一个文件夹,并在其中放置一个 csv 文件。 例如。 s3://employee-data/20190812/employee_data.csv
现在我希望我的蜂巢 table 每天在新文件夹下获取这个新文件并覆盖现有数据。我可以通过我的 ETL 获取文件夹名称 - '20190812'。
谁能帮忙。
我尝试了 ALTER table 设置位置 'new location'。但是,这不会覆盖数据。
create external table employee
{
name String,
hours_worked Integer
}
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 's3://employee-data/';
设置新位置,即可访问数据:
ALTER table set location 's3://employee-data/20190812/';
此语句指向 table 新位置,当然没有任何内容被覆盖。
或者将 table 分区:
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'