我正在尝试使用 php sdk 在 AWS EMR 上运行配置单元脚本。如何传递脚本参数(如输入、输出和要处理的日期)?
谢谢
我正在尝试使用 php sdk 在 AWS EMR 上运行配置单元脚本。如何传递脚本参数(如输入、输出和要处理的日期)?
谢谢
如果你也在为此苦苦挣扎......
将变量传递给 hive 脚本的示例代码可以在以下Amazon 论坛线程中找到
我已经用 Java SDK 完成了这项工作,使用 PHP SDK 基本上你需要做的是使用add_job_flow_steps 函数解析你想要的参数
调用函数时,您需要将参数添加到“Args”数组中的 StepConfig(对于您正在运行的脚本)。
Args - string|array - Optional - A list of command line arguments passed to the JAR file’s main function when executed. Pass a string for a single value, or an indexed array for multiple values.
参数的格式有点混乱,你需要有一个形式的数组
("-d","yourVariable=itsValue","-d","anotherVariable=AnotherValue")
所以它最终应该看起来像这样:
add_job_flow_steps('j-19430859jg9',array( new CFStepConfig(array(
'Name' => 'Run a hive script',
'HadoopJarStep' => array( 'Jar' => CFHadoopStep::run_hive_script(),
'Args' => array("-d","yourVariable=itsValue","-d","anotherVariable=AnotherValue")
))))
不知道语法对不对,没试过。
至少对于java来说是这样的,也许对于PHP你可能需要一个关联数组,我会尝试各种格式。
我希望这是为了使这些参数不会与其他 hadoop/hive 配置参数混淆。
然后,您可以使用 ${yourVariable} 以与 bash 中类似的方式在脚本中访问这些变量。
SELECT * FROM TABLE WHERE column='${yourVariable};