hive 配置单元S3数据插入不断覆盖数据

dwbf0jvd  于 2023-03-18  发布在  Hive
关注(0)|答案(1)|浏览(173)

下面是我的设想:
1.我从S3存储桶中的一个文件夹加载数据。让我们将此存储桶命名为“new_data”。
创建外部表格new_data(第1列字符串)行格式限定字段终止于'\t'位置's3://some-bucket/folder'
1.接下来,我从S3中的另一个文件夹加载数据,我们称之为“data_already_import”。
创建外部表格data_already_imported(第1列字符串)行格式限定字段终止于'\t'位置's3://某个存储桶/另一个文件夹'
1.然后,我找到new_data和data_already_imported之间的区别
按SELECT * FROM创建表差异(SELECT n.* FROM新数据n左外连接数据已导入旧ON n.列1 =旧.列1,其中旧.列1为NULL)i;
现在,我想将此“差异”移动到data_already_imported文件夹中。

INSERT INTO TABLE data_already_imported 
SELECT * FROM difference;

问题是这会覆盖data_already_imported中已经存在的数据。我也用INSERT OVERWRITE试过了,有没有人能指出我在这里做错了什么?

iyzzxitl

iyzzxitl1#

在Hive中,没有向已填充的表追加记录这样的操作,您必须创建另一个表(假设名称为new_data_already_imported),然后执行以下操作:

INSERT OVERWRITE TABLE new_data_already_imported
  SELECT * FROM (
    SELECT * FROM data_already_imported UNION ALL
    SELECT * FROM difference );

相关问题