【发布时间】:2019-04-19 20:59:38
【问题描述】:
我正在尝试在 AWS EMR 中执行 spark submit 以执行一个使用我编写的自定义 log4j appender 的简单项目。
我可以通过在集群软件设置中提供以下配置来传递我的 log4j 属性:
[{
"classification": "spark-log4j",
"properties": {
"log4j.appender.S": "CustomLog4JAppender",
"log4j.rootLogger": "DEBUG,S"
}
}
]
但是当我运行集群步骤时,我得到:
log4j:ERROR 无法实例化类 [CustomLog4JAppender]。 java.lang.ClassNotFoundException: CustomLog4JAppender
在集群标准错误中。
我正在执行的 jar 位于 S3 中,它包含 Main 类、我的 appender 类和所有依赖项。
我正在使用以下命令执行集群:command-runner.jar
并执行以下命令:
spark-submit --deploy-mode client --class Main s3://{path_to_jar}.jar
这里有几个问题:
- 集群中的哪个组件加载 log4j 记录器和属性?它发生在主节点中吗?在核心节点?
- 我可以做些什么来解决这个问题?我应该如何以不同的方式执行它?如何让它识别我的自定义 appender 类?
谢谢!
【问题讨论】:
标签: amazon-web-services apache-spark log4j amazon-emr appender