相关疑难解决方法(0)

Amazon EMR和Hive:将子目录加载到外部表时获取"java.io.IOException:Not a file"异常

我正在使用Amazon EMR.我在s3中有一些日志数据,都在同一个桶中,但在不同的子目录下,如:

"s3://bucketname/2014/08/01/abc/file1.bz"
"s3://bucketname/2014/08/01/abc/file2.bz"
"s3://bucketname/2014/08/01/xyz/file1.bz"
"s3://bucketname/2014/08/01/xyz/file3.bz"
Run Code Online (Sandbox Code Playgroud)

我正在使用 :

Set hive.mapred.supports.subdirectories=true;
Set mapred.input.dir.recursive=true;
Run Code Online (Sandbox Code Playgroud)

尝试加载"s3:// bucketname/2014/08 /"中的所有数据时:

CREATE EXTERNAL TABLE table1(id string, at string, 
          custom struct<param1:string, param2:string>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucketname/2014/08/';
Run Code Online (Sandbox Code Playgroud)

作为回报,我得到:

OK
Time taken: 0.169 seconds
Run Code Online (Sandbox Code Playgroud)

在尝试查询表时:

SELECT * FROM table1 LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我明白了:

Failed with exception java.io.IOException:java.io.IOException: Not a file: s3://bucketname/2014/08/01
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何减少这个?

hadoop hive amazon-s3 amazon-web-services emr

2
推荐指数
1
解决办法
3444
查看次数

标签 统计

amazon-s3 ×1

amazon-web-services ×1

emr ×1

hadoop ×1

hive ×1