如何使用HadoopJarStepConfig.StepProperties?

时间:2017-12-05 16:19:50

标签: amazon-web-services hadoop emr amazon-emr

AWS文档声明此属性是“作业流程步骤运行时设置的Java属性列表。您可以使用这些属性将键值对传递到JAR文件中的主函数。”

但是没有解释(至少,我没有找到)他们是如何传递的,以及如何在主要功能方面正确访问所述键值对的集合。

快速检查证明它们不是通过环境传递的,也不是通过命令行参数传递的。可能是其他方式?

1 个答案:

答案 0 :(得分:1)

好的,似乎这个映射转到Java系统属性,可以通过System.getProperties()调用从主函数端访问,但是有一些非明显的含义。

要记住的第一件事是,内部通过环境变量HADOOP_CLIENT_OPTS设置为-Dkey =值开关。但EMR并不打算通过shell规则来正确地转义键和值。

此外,如果存在具有不可打印字符的属性,则不会报告任何语法错误,只是省略完全设置它们。对于像*这样的特殊shell字符,它会更糟糕吗? ()\和这样 - 如果没有正确的解释,它将无法执行任务,并且日志记录将模糊地指向EMR内部shell脚本包装器内部的一些eval()调用中的模糊语法错误。

请注意这种行为。

属性必须是shell转义的,在某些情况下甚至可以进行双重转义。