gpt4 book ai didi

apache-spark - 如何在DockerFile中一次定义我的ENV变量并将其传递给我的有监督托管脚本提交的spark镜像?

转载 作者:行者123 更新时间:2023-12-02 20:23:29 27 4
gpt4 key购买 nike

我正在构建一些Docker Spark镜像,并且对如何将DockerFile中定义的环境(ENV)变量通过“run -e”一直传递到容器中,传递到有监督者,然后传递到Spark中感到有些困惑-submit shell,而不必再次将它们硬编码在supervisord.conf文件中(这似乎是此处有些类似的建议:supervisord environment variables setting up application)。

为了帮助说明,请设想以下组件:

  • DockerFile(包含大约20个环境变量“ENV FOO1 bar1”等)。
  • run.sh(docker run -d -e my_spark_program)
  • conf / supervisord.conf([程序:my_spark_program] command = sh /opt/spark/sbin/submit_my_spark_program.sh等)
  • Submit_my_spark_program.sh(包含我要运行的jar的 Spark 提交-可能还需要--files之类的东西
    •--conf'spark.executor.extraJavaOptions = -Dconfig.resource = app'
    •--conf'spark.driver.extraJavaOptions = -Dconfig.resource = app',但这似乎不太正确吗?)

  • 我想我想在DockerFile中定义一次我的ENV变量,并且只定义一次,而且我认为应该可以使用“-e”开关通过run.sh将它们传递到容器中,但是我似乎无法弄清楚如何将它们从那里传递到主管,再传递到spark-submit shell 程序(submit_my_spark_program.sh)中,以便最终可以将它们提供给我的spark-submit提交的jar文件。这似乎有点过分设计,所以也许我在这里错过了一些东西...?

    最佳答案

    显然,在这种情况下,答案(或者至少是解决方法)是不使用System.Property(name, default)通过管理程序获取Docker ENV变量,而是使用不太有用的System.getenv(name)-因为这似乎可行。

    我希望能够使用System.Property(name, default)来获取Docker ENV变量,因为这提供了提供默认值的简便方法,但是显然在这种情况下不起作用。如果有人可以通过提供一种使用System.Property的方式来改善此答案,则一定要加入。谢谢!

    关于apache-spark - 如何在DockerFile中一次定义我的ENV变量并将其传递给我的有监督托管脚本提交的spark镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36048241/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com