亚马逊EMR蜂巢执行错误

问题描述 投票:0回答:2

我正在尝试使用亚马逊EMR控制台运行一个简单的配置单元作业。每次我收到错误,指出“错误缺少参数基本路径”并且hive作业失败。任何人都可以建议我如何解决它。

我已将输入文件插入s3:// bucket / inputs位置,脚本位于s3:// bucket / script中,我的hive查询如下:

create external table table_name(        
 string var 1, 
 string var 2....) 
Row format delimited 
fields terminated by '/t' 
location 's3://bucket/outputs' 
load data inpath 's3://bucket/inputs/data.txt' into table table_name )

在亚马逊EMR工作流程中,我遵循了亚马逊文档提供的所有说明。我是这个领域的初学者。是否需要在hive作业创建的参数列表部分中传递任何参数。

提前致谢

amazon emr
2个回答
0
投票

试试这个:

-- start
SET mapred.input.dir.recursive=true;
CREATE EXTERNAL TABLE table_name (string line)
LOCATION 's3n://bucket/inputs/';

要么

LOCATION 's3n://bucket/*/*';

我认为它有效。

  • Apache Pig需要协议s3://,但是hive需要s3n://。我不知道为什么。

看到这个网站:S3 Support in Apache Hadoop,有三种类型的s3文件前缀。

  • S3A(URI方案:s3a://) - Hadoop 2.7+
  • S3N FileSystem(URI方案:s3n://)
  • S3 Block FileSystem(URI方案:s3://)

0
投票

ASF文档明确声明在EMR上,您必须使用s3,而不是其他任何一个。亚马逊发布了自己的S3客户端库。如果Hive需要S3n,这意味着它的类路径出现问题,并且它没有拿起AWS专有客户端 - 这不仅令人困惑,而且可能带来麻烦。

对于好奇,这里是the history of Hadoop S3 support

© www.soinside.com 2019 - 2024. All rights reserved.