为什么配置单元“创建外部表”,在s3上,将数据存储在子文件夹“-ext-10000”下?

nwsw7zdq  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(392)

下面的配置单元代码突然开始在一个额外的子文件夹下存储数据;

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\u name/folder\u name”中,而是存储在“s3n://bucket\u name/folder\u name/-ext-10000”下。
对该表的查询结果为0行,除非用新位置重新定义该表。
将关键字“overwrite”更改为“into”可以解决这个问题,但是需要我们重新访问数百个直到最近还可以正常工作的脚本。
我们在ami2.3.6上运行hadoop1.0.3,hive0.10.0(apache版本不是aws-one),对以前工作的技术堆栈的唯一更改是从ami2.2.1迁移过来的,这是我们之前没有意识到的。
为什么会发生这种情况,我们如何解决?

3pmvbmvn

3pmvbmvn1#

原来这是在AMI2.2.1和2.3.6之间引入的回归,amazon希望在AMI2.3.7中修复

相关问题