为什么 --conf 参数在 yarn-cluster 模式下不工作(但在 yarn-client 和本地工作)?

Why doesn't the --conf parameter work in yarn-cluster mode (but works in yarn-client and local)?

根据Spark Documentation

--conf: Arbitrary Spark configuration property in key=value format. For values that contain spaces wrap “key=value” in quotes (as shown).

事实上,当我使用该参数时,在我的 Spark 程序中我可以使用以下方法检索密钥的值:

System.getProperty("key");

当我在本地测试我的程序时,以及在 yarn-client 模式下,这都有效;我可以记录 keyvalue 并看到它与我在命令行中写的相匹配,但它 returns null 当我在 yarn-cluster 模式下提交完全相同的程序时。

为什么我在 yarn-cluster 模式下提交 Spark 应用程序时无法检索给定的键值 --conf "key=value"

有什么想法and/or 解决方法吗?

显然,通过 --conf 您应该只传递特定于 Spark 的属性。如果你想传递任意键值对,那么你应该像这样传递它们:

--driver-java-options "-Dkey=someValue"

然后您可以通过以下方式检索密钥的值:

System.getProperty("key");