s3distcp作业失败:--dest不匹配

r1zk6ea1  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(368)

我正在尝试使用s3distcp将一个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。
(第3部分)。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(本机方法)sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl。java:57)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:606)在org.apache.hadoop.util.runjar.main(runjar。java:187)

ovfsdjhp

ovfsdjhp1#

这似乎是个愚蠢的错误。它将以下内容作为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'
bwitn5fc

bwitn5fc2#

错误信息显示 \ --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'
vzgqcmou

vzgqcmou3#

在反编译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的步骤时就是这样。从命令行创建步骤需要使用“,”而不是“=”。

相关问题