amazonemr:如何在参数中添加带有内联shell脚本的amazonemr mapreduce/hive/spark步骤?

toiithl6  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(333)

例如,我有两个配置单元作业,其中一个作业的输出用作第二个作业中的参数/变量。我可以在终端上成功地运行以下命令,以在emr集群的主节点上获得结果。

[hadoop@ip-10-6-131-223 ~]$ hive -f s3://MyProjectXYZ/bin/GetNewJobDetails_SelectAndOverwrite.hql --hivevar LatestLastUpdated=$(hive -f s3://MyProjectXYZ/bin/GetNewJobDetails_LatestLastUpdated.hql)

但是,似乎我不能添加一个Hive步骤运行 GetNewJobDetails_SelectAndOverwrite.hql 参数文本框设置为 --hivevar LatestLastUpdated=$(hive -f s3://MyProjectXYZ/bin/GetNewJobDetails_LatestLastUpdated.hql) . 错误是:
详细信息:失败:parseexception行7:61无法识别表达式规范中“$”(“配置单元”)附近的输入
jar位置:command-runner.jar
主类:无
参数:配置单元脚本--运行配置单元脚本--args-f s3://myprojectxyz/bin/getnewjobdetails\u selectandoverwrite.hql--配置单元变量latestlastupdated=$(配置单元-f s3://myprojectxyz/bin/getnewjobdetails\u latestlastupdated.hql)
失败时的操作:取消并等待
我还尝试了command-runner.jar来运行第一个配置单元命令。它仍然不起作用:
noviableexception(15@[412:1:atomexpression:(constant |(intervalexpression)=>intervalexpression | castextpression | floorexpression | case expression | whenexpression |(subqueryexpression)=>(subqueryexpression)->^(tok|u subquery | expr tok|u op subqueryexpression)|(function)=>function | tableorcolumn |表达式inparenthesis[true];])在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser$dfa36.specialstatetransformation(hiveparser\u identifiersparser)上。java:31808)在org.antlr.runtime.dfa.predict(dfa。java:80)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.atomexpression(hiveparser\u identifiersparser。java:6746)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precedencefieldexpression(hiveparser\u identifiersparser)。java:6988)位于org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precenceUnaryPrefixexpression(hiveparser\u identifiersparser)。java:7324)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precenceunarysuffixexpression(hiveparser\u identifiersparser)。java:7380)位于org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencebitwisexorexpression(hiveparser\u identifiersparser)。java:7542)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precedencestarexpression(hiveparser\u identifiersparser。java:7685)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precenceplusexpression(hiveparser\u identifiersparser。java:7828)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precedenceconcatenateexpression(hiveparser\u identifiersparser)。java:7967)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precenceamplersandexpression(hiveparser\u identifiersparser。java:8177)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencebitwiseorexpression(hiveparser\u identifiersparser)。java:8314)位于org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencesimilarexpressionpart(hiveparser\u identifiersparser)。java:8943)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencesimilarexpressionmain(hiveparser\u identifiersparser)。java:8816)位于org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencesimilarexpression(hiveparser\u identifiersparser)。java:8697)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precenceequalexpression(hiveparser\u identifiersparser。java:9537)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.precencenotexpression(hiveparser\u identifiersparser。java:9703)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.predenceandexpression(hiveparser\u identifiersparser。java:9812)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.prevenceorexpression(hiveparser\u identifiersparser。java:9953)在org.apache.hadoop.hive.ql.parse.hiveparser\u identifiersparser.expression(hiveparser\u identifiersparser)。java:6686)在org.apache.hadoop.hive.ql.parse.hiveparser.expression(hiveparser。java:42062)位于org.apache.hadoop.hive.ql.parse.hiveparser\u fromclauseparser.searchcondition(hiveparser\u fromclauseparser.searchcondition)。java:6446)在org.apache.hadoop.hive.ql.parse.hiveparser\u fromclauseparser.whereclause(hiveparser\u fromclauseparser。java:6364)在org.apache.hadoop.hive.ql.parse.hiveparser.whereclause(hiveparser。java:41844)在org.apache.hadoop.hive.ql.parse.hiveparser.atomselectstatement(hiveparser。java:36755)在org.apache.hadoop.hive.ql.parse.hiveparser.selectstatement(hiveparser。java:36987)在org.apache.hadoop.hive.ql.parse.hiveparser.regularbody(hiveparser。java:36504)在org.apache.hadoop.hive.ql.parse.hiveparser.querystatementexpressionbody(hiveparser。java:35822)在org.apache.hadoop.hive.ql.parse.hiveparser.querystatementexpression(hiveparser。java:35710)在org.apache.hadoop.hive.ql.parse.hiveparser.execstatement(hiveparser。java:2284)在org.apache.hadoop.hive.ql.parse.hiveparser.statement(hiveparser。java:1333)在org.apache.hadoop.hive.ql.parse.parsedriver.parse(parsedriver。java:208)在org.apache.hadoop.hive.ql.parse.parseutils.parse(parseutils。java:77)在org.apache.hadoop.hive.ql.parse.parseutils.parse(parseutils。java:70)在org.apache.hadoop.hive.ql.driver.compile(driver。java:468)位于org.apache.hadoop.hive.ql.driver.compileinternal(驱动程序。java:1317)在org.apache.hadoop.hive.ql.driver.runinternal(driver。java:1457)在org.apache.hadoop.hive.ql.driver.run(驱动程序。java:1237)在org.apache.hadoop.hive.ql.driver.run(driver。java:1227)在org.apache.hadoop.hive.cli.clidriver.processlocalcmd(clidriver。java:233)在org.apache.hadoop.hive.cli.clidriver.processcmd(clidriver。java:184)在org.apache.hadoop.hive.cli.clidriver.processline(clidriver。java:403)在org.apache.hadoop.hive.cli.clidriver.processline(clidriver。java:336)在org.apache.hadoop.hive.cli.clidriver.processreader(clidriver。java:474)在org.apache.hadoop.hive.cli.clidriver.processfile(clidriver。java:490)在org.apache.hadoop.hive.cli.clidriver.executedriver(clidriver。java:793)在org.apache.hadoop.hive.cli.clidriver.run(clidriver。java:759)位于org.apache.hadoop.hive.cli.clidriver.main(clidriver。java:686)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)在sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:62)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:498)在org.apache.hadoop.util.runjar.run(runjar。java:234)在org.apache.hadoop.util.runjar.main(runjar。java:148)失败:parseexception行7:61无法识别表达式中“$”(“配置单元”)附近的输入规范

jslywgbw

jslywgbw1#

您应该在emr上以两个不同的步骤执行这两个hive命令。此外,参数应该作为列表而不是字符串传递。可以按空格(“”)拆分配置单元命令,这将返回一个列表,并将此列表作为参数传递给emr步骤。
参考文献:https://docs.aws.amazon.com/cli/latest/reference/emr/add-steps.html

相关问题