Man*_*rki 3 log4j slf4j apache-spark azure-databricks
我正在使用 azure databricks 5.5 LTS 以及 Spark 2.4.3 和 scala 2.11。几乎每个发送到 databricks 集群的请求都会出现以下错误日志
ERROR RetryingHMSHandler: NoSuchObjectException(message:There is no database named global_temp)
at org.apache.hadoop.hive.metastore.ObjectStore.getMDatabase(ObjectStore.java:487)
at org.apache.hadoop.hive.metastore.ObjectStore.getDatabase(ObjectStore.java:498)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
Run Code Online (Sandbox Code Playgroud)
虽然这不会影响我们正在尝试做的事情的最终结果,但我们的日志不断充满这些内容,并且浏览起来并不是很愉快。我尝试通过将以下属性设置为驱动程序和执行程序来关闭它
log4j.level.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF
Run Code Online (Sandbox Code Playgroud)
只是后来才意识到 RetryingHMSHandler 类实际上使用 slf4j 记录器,有没有一种优雅的方法来克服这个问题?
小智 5
也许晚了,但 Databricks 集群 9.1 LTS(Apache Spark 3.1.2、Scala 2.12)也面临同样的问题。通过使用添加以下两个属性的初始化脚本来解决
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL, publicFile
log4j.additivity.org.apache.hadoop.hive.metastore.RetryingHMSHandler=false
Run Code Online (Sandbox Code Playgroud)
到驱动程序的 log4j.properties。
我的目标是从可从作业 UI 下载的“log4j-active.log”文件中删除所有详细日志。通过关注https://learn.microsoft.com/en-us/azure/databricks/kb/clusters/overwrite-log4j-logs,我决定在驱动程序的 log4j.properties 中添加/覆盖一些属性值(首先我看了一下当然,就其内容而言)。
添加了这两个属性,我还能够删除 RetryingHMSHandler (唯一仍然存在的第三方日志调用)
希望能帮助到你 ;)
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |