Amazon EMR :如何在参数中添加带有内联 shell 脚本的 Amazon EMR MapReduce/Hiv



例如,我有两个Hive作业,其中一个作业的输出用作第二个作业中的参数/变量。我可以在终端上成功运行以下 comand,以在 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 无法识别附近的输入 表达式规范中的"$" '(' 'hive'

JAR 位置 : 命令运行程序.jar

主课 : 无

参数:hive-script --run-hive-script --args -f s3://MyProjectXYZ/bin/GetNewJobDetails_SelectAndOverwrite.hql --hivevar LatestLastUpdate=$(hive -f s3://MyProjectXYZ/bin/GetNewJobDetails_LatestLastUpdated.hql)

失败时的操作:取消并等待


我还尝试了使用命令运行器.jar运行第一个 hive 命令。它仍然不起作用:

NoViableAltException(15@[412:1: atomExpression : ( constant |( 区间表达式 )=> 区间表达式 |演员表表达 | 提取表达式 |地板表达 |案例表达式 |当表达式 |( subQueryExpression )=> ( subQueryExpression ) -> ^( TOK_SUBQUERY_EXPR TOK_SUBQUERY_OP 子查询表达式 ) |( 功能 )=>函数 |表或列 |表达式在括号中[true] );]) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser$DFA36.specialStateTransition(HiveParser_IdentifiersParser.java:31808) at org.antlr.runtime.DFA.predict(DFA.java:80) at org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.atomExpression(HiveParser_IdentifiersParser.java:6746) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级字段表达式(HiveParser_IdentifiersParser.java:6988) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级Unary前缀表达式(HiveParser_IdentifiersParser.java:7324) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级Unary后缀表达式(HiveParser_IdentifiersParser.java:7380) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceBitwiseXorExpression(HiveParser_IdentifiersParser.java:7542) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级星表达式(HiveParser_IdentifiersParser.java:7685) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级加表达式(HiveParser_IdentifiersParser.java:7828) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级连接表达式(HiveParser_IdentifiersParser.java:7967) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级与表达式(HiveParser_IdentifiersParser.java:8177) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级BitwiseOrExpression(HiveParser_IdentifiersParser.java:8314) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级相似表达式部分(HiveParser_IdentifiersParser.java:8943) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.precedenceSimilarExpressionMain(HiveParser_IdentifiersParser.java:8816) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级相似表达式(HiveParser_IdentifiersParser.java:8697) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级等表达式(HiveParser_IdentifiersParser.java:9537) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级不表达式(HiveParser_IdentifiersParser.java:9703) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级和表达式(HiveParser_IdentifiersParser.java:9812) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.优先级或表达式(HiveParser_IdentifiersParser.java:9953) 在 org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.表达式(HiveParser_IdentifiersParser.java:6686) 在 org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:42062) 在 org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.搜索条件(HiveParser_FromClauseParser.java:6446) 在 org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.whereClause(HiveParser_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) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:468) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227) at 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) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:234) at org.apache.hadoop.util.RunJar.main(RunJar.java:148) FAILED: ParseException 第 7:61 行无法识别靠近 '$' '(' 'hive' in 表达式规范

您应该在 EMR 上执行两个 hive 命令作为 2 个不同的步骤。此外,参数应作为列表而不是字符串传递。您可以按空格 (' ') 拆分 hive 命令,这将返回一个列表并将此列表作为参数传递给 EMR 步骤。

参考 : https://docs.aws.amazon.com/cli/latest/reference/emr/add-steps.html

最新更新