首页 > 解决方案 > 如何在 spark-submit 中设置 -javaagent

问题描述

我在 Java Maven 项目中使用了面向方面的编程来进行日志记录。

通过 eclipse 运行它时,我必须在 vmargs 中初始化 javaagent,如下所示:

    -javaagent:lib/aspectjweaver-1.9.1.jar

现在我想将生成的 jar 提交给 Spark 工作人员。我已经写了一个shell脚本来做到这一点。我能够运行但无法初始化 javaagent。

export SPARK_PATH=/xyz
export SPARK_URL=spark://abc:0000
export JAVA_OPTS="$JAVA_OPTS -javaagent:../aspectweaver-1.9.1.jar"
$SPARK_PATH/spark-submit --master $SPARK_URL  --jars  --class com.main.index ../index-0.0.1-SNAPSHOT.jar

我已经尝试了许多示例,例如设置 JAVA_OPTS 和 CATALINE_OPTS,创建 spark-env.sh 并设置它。但这一切都没有奏效。从最近3天开始挣扎。

我在stackoverflow上检查了几个类似的问题,但没有一个对设置javaagent有帮助。帮助。

谢谢。

编辑:

我正在检查 javaagent 是否使用以下代码在代码中初始化:

try {
            org.aspectj.weaver.loadtime.Agent.getInstrumentation();
        } catch (NoClassDefFoundError | UnsupportedOperationException e) {
            System.out.println(e);
        }

我得到 NoClassDefFoundError。得出的结论是未设置 javaagent。

标签: shellapache-sparkshjvm-argumentsjavaagents

解决方案


我得到了答案,我不得不使用“--driver-java-options”。以下是更新后的脚本。

$SPARK_PATH/spark-submit --master $SPARK_URL --driver-java-options "-javaagent:../aspectjweaver-1.9.1.jar" --class com.main.index ../index-0.0.1-SNAPSHOT.jar "$1"

推荐阅读