【问题标题】:databricks unable to resolve custom log appenderdatabricks 无法解析自定义日志附加程序
【发布时间】:2020-06-23 23:39:13
【问题描述】:

我正在尝试将日志从 databricks 集群发送到 LogDNA,为此我确实有一个自定义附加程序,它与单元测试配合良好,因为我可以看到日志过来了。但是现在当我尝试按照this 的指导将它与Databricks 集成时,databricks 无法解析classPath。我正在加载到集群中的初始化脚本如下所示:

#!/usr/bin/env bash

echo "Executing on Driver: $DB_IS_DRIVER"
if [[ $DB_IS_DRIVER = "TRUE" ]]; then
LOG4J_PATH="/home/ubuntu/databricks/spark/dbconf/log4j/driver/log4j.properties"
else
LOG4J_PATH="/home/ubuntu/databricks/spark/dbconf/log4j/executor/log4j.properties"
fi
echo "log4j path : $LOG4J_PATH"
echo "log4j.rootLogger=INFO, LogDNAAppender, console" >> ${LOG4J_PATH}
echo "log4j.appender.LogDNAAppender=tools.logdna.util.LogDNAAppender" >> ${LOG4J_PATH}
echo "log4j.appender.LogDNAAppender.name=LogDNAAppender" >> ${LOG4J_PATH}
// and then properties associated with the appender

这个脚本(到初始化脚本)和依赖成功上传到集群,但是在运行时,它会出错:

log4j:ERROR Could not instantiate class [tools.logdna.util.LogDNAAppender].
java.lang.ClassNotFoundException: tools.logdna.util.LogDNAAppender

我有什么遗漏或需要完成这项工作吗?

【问题讨论】:

    标签: log4j azure-databricks


    【解决方案1】:

    logback-logdna 添加到 Databricks 的类路径中,这将有助于 Classloader 定位和加载 LogDNAAppender 类。

    Download logback-logdna

    【讨论】:

    • 感谢您的及时回复,但我有自己的自定义 log4j appender 版本,集群无法在类路径中找到它,但我可以通过笔记本验证我可以访问 Appender跨度>
    【解决方案2】:

    这里的问题是,我正在将依赖项上传到 databricks 集群中的库,这对于我的所有案例来说已经足够了,但显然不适用于 init 脚本,它是主机中的 /databricks/jars(我没有那些罐子)在运行时寻找导致 ClassNotFoundException。解决方法是将这些 jar 放在正确的文件夹中,即 /databricks/jars。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多