gpt4 book ai didi

hive - 在配置单元中插入覆盖无法正常工作

转载 作者:行者123 更新时间:2023-12-01 09:20:29 29 4
gpt4 key购买 nike

我在配置单元中创建外部表,然后用户 insert overwrite directory ... 添加文件。然而,我第二次运行查询时,我希望旧文件被删除,新文件替换它们(因为我有覆盖选项)。然而,情况并非如此,新文件被添加到目录中而没有删除导致数据不一致的旧文件。这里出了什么问题?

最佳答案

我正要提交一个错误,但这是现有问题:HIVE-13997 -- 如果您希望使用 overwrite directory 获得预期结果,请应用补丁。

从测试中我发现的是:

overwrite directoryoverwrite table 的工作方式不同:如果您希望覆盖整个目录,您应该使用 overwrite table

为测试创建了这个表:create external table t2 (a1 int,a2 string) LOCATION '/user/cloudera/t2';

覆盖目录:

如您所料,该目录已被覆盖;换句话说,如果指定的路径存在,它将被破坏并替换为输出。

hive> 插入覆盖目录 '/user/cloudera/t2' select * from sqoop_import.departments;

所以如果上面的语句要在位置 /user/cloudera/t2/000000_0 写入数据,那么只会覆盖这个位置。

#~~~~ BEFORE ~~~~
[cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera/t2/*
-rwxr-xr-x 1 cloudera cloudera 60 2016-07-25 17:42 /user/cloudera/t2/000000_0
-rwxr-xr-x 1 cloudera cloudera 0 2016-07-25 15:48 /user/cloudera/t2/_SUCCESS
-rwxr-xr-x 1 cloudera cloudera 88 2016-07-25 15:48 /user/cloudera/t2/part-m-00000
-rwxr-xr-x 1 cloudera cloudera 60 2016-07-25 15:48 /user/cloudera/t2/part-m-00001

#~~~~ AFTER: Note the timestamp ~~~~
[cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera/t2/*
-rwxr-xr-x 1 cloudera cloudera 60 2016-07-25 18:01 /user/cloudera/t2/000000_0
-rwxr-xr-x 1 cloudera cloudera 0 2016-07-25 15:48 /user/cloudera/t2/_SUCCESS
-rwxr-xr-x 1 cloudera cloudera 88 2016-07-25 15:48 /user/cloudera/t2/part-m-00000
-rwxr-xr-x 1 cloudera cloudera 60 2016-07-25 15:48 /user/cloudera/t2/part-m-00001

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~

覆盖表:

所选表或分区的内容将替换为相应 select 语句的输出。

hive> 插入覆盖表 t2 select * from sqoop_import.departments;

现在整个目录都被覆盖了:

[cloudera@quickstart ~]$ hadoop fs -ls /user/cloudera/t2/*
-rwxr-xr-x 1 cloudera cloudera 60 2016-07-25 18:03 /user/cloudera/t2/000000_0
-rwxr-xr-x 1 cloudera cloudera 0 2016-07-25 15:48 /user/cloudera/t2/_SUCCESS

所以总而言之,覆盖目录只会覆盖生成文件的直接路径,而不是目录。 see Writing-data-into-the-file-system-from-queries

关于hive - 在配置单元中插入覆盖无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38578719/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com