我是aws新手。我创建了一个集群并用ssh连接到主节点。当我试图将文件从s3://my bucket name/复制到本地时file://home/hadoop pig中的文件夹使用:
cp s3://my-bucket-name/path/to/file file://home/hadoop
我得到一个错误:
2013-06-08 18:59:00267[main]error org.apache.pig.tools.grunt.grunt-错误29 99:意外的内部错误。aws access key id和secret access key必须分别指定为s3 url的用户名或密码,或者通过设置fs.s3.awsaccesskeyid或fs.s3.awssecretaccesskey属性来指定。
我甚至不能把它放进我的s3桶里。我设置了aws\u access\u密钥和aws\u secret\u密钥,但没有成功。我也找不到pig的配置文件来设置适当的字段。
需要帮忙吗?
编辑:我尝试使用完整的s3n://uri在pig中加载文件
grunt> raw_logs = LOAD 's3://XXXXX/input/access_log_1' USING TextLoader a
s (line:chararray);
grunt> illustrate raw_logs;
我得到以下错误:
2013-06-08 19:28:33342[main]info org.apache.pig.backend.hadoop.executionengi ne.hexecutionengine-连接到hadoop文件系统的位置:file:///2013-06-08 19:28:33404[main]info org.apache.pig.backend.hadoop.executionengi ne.mapreducelayer.mrcompiler-文件连接阈值:100?fal se 2013-06-08 19:28:33404[main]info org.apache.pig.backend.hadoop.executionengi ne.mapreducelayer.multiqueryoptimizer-优化前mr计划大小:1 2013-06-08 19:28:33405[main]info org.apache.pig.backend.hadoop.executionengi ne.mapreducelayer.multiqueryoptimizer-优化后mr计划大小:1 2013-06-08 19:28:33,405[main]info org.apache.pig.tools.pigstats.scriptstate-pig脚本设置已添加到作业2013-06-08 19:28:33429[main]info org.apache.pig.backend.hadoop.executionengi ne.mapreducelayer.jobcontrolcompiler-mapred.job.reduce.markreset.buffer.percen t未设置,设置为默认值0.3 2013-06-08 19:28:33,430[main]error org.apache.pig.pen.examplegenerator-读取数据时出错。创建作业配置时出现内部错误。java.lang.runtimeexception:创建作业配置时发生内部错误。org.apache.pig.pen.examplegenerator.getexamples(examplegenerator.java:160)org.apache.pig.pigserver.getexamples(pigserver)。java:1244)位于org.apache.pig.tools.grunt.gruntparser.processillustrate(gruntparser。java:722)在org.apache.pig.tools.pigscript.parser.pigscriptparser.illustrate(pigs)上。java:591)位于org.apache.pig.tools.pigscript.parser.pigscriptparser.parse(pigscript解析器)。java:306)位于org.apache.pig.tools.grunt.gruntparser.parsestoponerror(gruntparser.java:189)位于org.apache.pig.tools.grunt.gruntparser.parsestoponerror(gruntparser.java:165)在org.apache.pig.tools.grunt.grunt.run(grunt。java:69)在org.apache.pig.main.run(main。java:500)在org.apache.pig.main.main(main。java:114)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)在sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:39)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:25)在java.lang.reflect.method.invoke(方法。java:597)在org.apache.hadoop.util.runjar.main(runjar。java:187)2013-06-08 19:28:33432[main]错误org.apache.pig.tools.grunt.grunt-错误29 97:遇到ioexception。异常:在上创建作业配置时发生内部错误。日志文件中的详细信息:/home/hadoop/pig_.log
3条答案
按热度按时间5tmbdcev1#
我经历了完全相同的错误,最终找到了解决方法。但是,我同时改变了两件事,所以我不确定这两件事是否都是必需的(当然其中一件是必需的)。
首先,我确定我的s3数据和emr系统在同一个区域。当我遇到这个问题时,我的数据在美国东部,电子病历在美国西部。我把美国东部(弗吉尼亚州)标准化了,又称美国东部-1,又称美国标准,又称美国违约,又称美国国家标准。弗吉尼亚。这可能不是必需的,但并不有害。
其次,当我得到错误时,我按照其中一个视频中的步骤启动pig,并给它一个“-x local”选项。事实证明“-x local”似乎可以保证阻止对s3的访问(见下文)。
解决方案是无参数启动清管器。
我希望这有帮助。
吉尔
dba5bblo2#
cp
在里面不知道s3。
您可能需要使用:
不知道为什么
s3cmd cp ...
不做它需要做的,但是s3cmd get ...
作品。以及man s3cmd
有:g6ll5ycj3#
首先,您应该使用s3n协议(除非您使用s3协议将文件存储在s3上)-s3用于块存储(即,类似于hdfs,仅在s3上),s3n用于本机s3文件系统(即,您在那里看到的内容)。
您可以使用distcp或来自s3n的简单清管器负载。您可以在hadoop-site.xml中提供异常中指定的access&secret(有关更多信息,请参阅此处):http://wiki.apache.org/hadoop/amazons3),也可以将它们添加到uri:
确保你的秘密不包含反斜杠-否则它不会工作。