1

我正在尝试使用 s3DistCp 将 1 个 S3 文件夹中的一些小文件合并到另一个 S3 文件夹中。脚本类似于以下内容:

elastic-mapreduce --jobflow j-33EDUGSQCN0PZ --jar \
/home/hadoop/lib/emr-s3distcp-1.0.jar \
--args '--src,s3://li-test/data, \
--dest,s3://li-test/result, \
--groupBy,[0-9]*,\
--targetSize,128'

但我收到以下 java.lang.RuntimeException 错误。需要帮助。谢谢!

线程“main”java.lang.RuntimeException 中的异常:参数\ --dest 不匹配。在 emr.hbase.options.Options.parseArguments(Options.java:75) 在 emr.hbase.options.Options.parseArguments(Options.java:57) 在 com.amazon.elasticmapreduce.s3distcp.S3DistCp$S3DistCpOptions。
(S3DistCp.java:124) 在 com.amazon.elasticmapreduce.s3distcp.S3DistCp.run(S3DistCp.java:545) 在 org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65) 在 org.apache。 hadoop.util.ToolRunner.run(ToolRunner.java:79) 在 com.amazon.elasticmapreduce.s3distcp.Main.main(Main.java:13) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util .RunJar.main(RunJar.java:187)

4

3 回答 3

1

在反编译存储在 emr 集群的 /home/hadoop/lib 文件夹中的 emr-s3distcp-1.0.jar 后,我发现 java 代码正在寻找具有这种风格的参数:

--src=s3://BUCKET-NAME/139kb-input --dest=s3://BUCKET-NAME/139kb-output

此行与文档之间的具体区别在于在参数和参数的值之间使用 '=' 而不是 ','。

这是 java 使用的 if 语句:

if (argument.length() >= this.arg.length() + 1 && argument.substring(0, this.arg.length() + 1).equals(this.arg + "="))

其中 this.arg 是“--src”,参数是“--src=s3://BUCKET-NAME/139kb-input”

警告:通过 Web 界面将步骤创建为自定义 jar 时就是这种情况。如文档所述,从命令行创建步骤可以使用“,”而不是“=”。

于 2015-07-16T19:35:17.487 回答
0

错误消息说不\ --dest匹配,这意味着它认为\是参数的一部分。尝试这个:

elastic-mapreduce --jobflow j-33EDUGSQCN0PZ --jar \
/home/hadoop/lib/emr-s3distcp-1.0.jar \
--args '--src,s3://li-test/data, --dest,s3://li-test/result, --groupBy,[0-9]*, --targetSize,128'
于 2013-10-21T21:01:34.870 回答
0

这似乎是一个愚蠢的错误。它正在阅读以下内容作为 S3DistCp 命令行选项:

\ --dest

因此,与其尝试将命令分成几行,不如给出如下命令:

elastic-mapreduce --jobflow j-33EDUGSQCN0PZ --jar /home/hadoop/lib/emr-s3distcp-1.0.jar --args '--src,s3://li-test/data, --dest,s3://li-test/result, --groupBy,[0-9]*,--targetSize,128'
于 2013-10-21T21:01:05.300 回答