#apache-spark #log4j #slf4j #azure-databricks
#apache-spark #log4j #slf4j #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)
Хотя это не влияет на конечный результат того, что мы пытаемся сделать, наши журналы постоянно заполняются этим, и просматривать их не очень приятно. Я попытался отключить его, установив следующее свойство для драйвера и исполнителя
log4j.level.org.apache.hadoop.hive.metastore.RetryingHMSHandler=OFF
только для того, чтобы позже понять, что класс RetryingHMSHandler фактически использует slf4j logger, есть ли элегантный способ преодолеть это?
Комментарии:
1. slf4j — это своего рода оболочка поверх log4j / logback. Чтобы установить надлежащий уровень журнала, вам необходимо зависеть от log4j / logback / properties
2. Спасибо за ваш комментарий @Steephen, но это то, что
log4j.level....
я должен делать, нет?3. да, logging.apache.org/log4j/2.x/manual/customloglevels.html
Ответ №1:
Возможно, поздно, но столкнулся с той же проблемой с кластером 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
в log4j.properties драйвера.
Моей целью было удалить все подробные журналы из файла «log4j-active.log», который можно загрузить из пользовательского интерфейса задания. Следуя https://learn.microsoft.com/en-us/azure/databricks/kb/clusters/overwrite-log4j-logs , я решил добавить / перезаписать некоторые значения свойств в файле log4j.properties драйвера (конечно, сначала я взглянул на его содержимое).
Добавив эти два свойства, я смог удалить также повторную попытку hmshandler (единственный сторонний вызов журнала, который все еще сохранялся)
Надеюсь, это поможет 😉