2

以下 Hive 代码突然开始在一个额外的子文件夹下存储数据;

DROP TABLE IF EXISTS folder_test;

CREATE EXTERNAL TABLE IF NOT EXISTS folder_test (
    col1              STRING,
    col2          INT,
    col3              INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
LOCATION 's3n://bucket_name/folder_name'
;

insert overwrite table folder_test
select col1, col2, col3 
from data_table
limit 10;

因此,数据不是在“s3n://bucket_name/folder_name”中,而是存储在“s3n://bucket_name/folder_name/-ext-10000”下。

除非使用新位置重新定义该表,否则对该表的查询将产生 0 行。

将关键字“overwrite”更改为“into”可以解决问题,但需要我们重新访问数百个直到最近都运行良好的脚本。

我们在 AMI 2.3.6 上运行 Hadoop 1.0.3、Hive 0.10.0(Apache 版本而不是 AWS 版本),对以前工作的技术堆栈的唯一更改是从 AMI 2.2.1 迁移,这是我们之前没有意识到的我们做了。

为什么会发生这种情况,我们该如何解决?

4

1 回答 1

1

原来这是在 AMI 2.2.1 和 2.3.6 之间引入的回归,亚马逊希望在 AMI 2.3.7 中修复

于 2013-06-07T16:10:47.857 回答