使用aws php sdk将参数传递给hive脚本

时间:2012-03-27 15:26:26

标签: php amazon-web-services hive amazon-emr

我正在尝试使用php sdk在AWS EMR上运行hive脚本。 如何传递脚本参数(如输入,输出和日期以进行处理)?

由于

2 个答案:

答案 0 :(得分:1)

如果你正在努力解决这个问题......

可以在以下Amazon Forum Thread

中找到用于将变量传递到配置单元脚本的示例代码

答案 1 :(得分:0)

我已经使用Java SDK完成了这项工作,使用PHP SDK基本上你需要做的是用add_job_flow_steps function

解析你想要的参数

调用函数时,需要在“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};