繁体   English   中英

为什么Hive在S3上“创建外部表”将数据存储在子文件夹“ -ext-10000”下?

[英]Why does Hive “create external table”, on S3, store data under subfolder “-ext-10000”?

下面的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迁移而来,之前我们没有意识到我们做了。

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

事实证明,这是在AMI 2.2.1和2.3.6之间引入的一种回归,Amazon希望在AMI 2.3.7中修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM