2016-05-18 20 views
8

Chcę, aby mój program sterownika Spark, napisany w Pythonie, wyprowadził kilka podstawowych informacji rejestracyjnych. Mogę to zrobić na trzy sposoby:Rejestrowanie PySpark?

  1. Korzystanie z mostka PySpark py4j w celu uzyskania dostępu do narzędzia do logowania log4j używanego przez firmę Spark.

log4jLogger = sc._jvm.org.apache.log4j LOGGER = log4jLogger.LogManager.getLogger(__name__) LOGGER.info("pyspark script logger initialized")

  1. wystarczy użyć standardowego drukiem konsoli.

  2. Moduł biblioteki standardowej Python. Wydaje się to idealne i najbardziej Pythoniczne podejście, jednak co najmniej z pudełka, to nie działa, a logowane wiadomości nie wydają się być odzyskiwane. Oczywiście można to skonfigurować do logowania do py4j-> log4j i/lub do konsoli.

Oficjalny podręcznik programowania (https://spark.apache.org/docs/1.6.1/programming-guide.html) w ogóle nie wspomina o rejestrowaniu. To rozczarowuje. Powinien istnieć standardowy udokumentowany zalecany sposób logowania z programu sterownika Spark.

szukał tego problemu i znalazłem to: How do I log from my Python Spark script

Ale zawartość tego wątku były niezadowalające.

Konkretnie mam następujące pytania:

  • jestem brakuje standardowy sposób logowania z programu sterownika PySpark?
  • Czy są jakieś plusy i minusy logowania się do py4j-> log4j kontra konsoli?
+0

Czy kiedykolwiek otrzymałeś odpowiedź na to pytanie? Wydaje mi się, że 1 to jedyne rozwiązanie. 2 nie działało dla mnie (byłem tym zaskoczony). Patrząc na inne pytanie, z którym się łączyłeś, nie uważam, że 'logging.getLogger ('py4j') działa, ponieważ py4j nie używa log4j logger, używa java.utils.logger. – dragonx

+1

Wniosek, do jakiego doszedłem, to że Spark zasadniczo nie zamierza wykonywać niestandardowych zadań Sparka w celu ich własnego logowania. Zazwyczaj piszesz program sterujący, który koduje dość prosty przepływ pracy, a sam Spark wykonuje ciężki lifting i zapewnia różne narzędzia do monitorowania i diagnostyki. – clay

+0

Czy przesyłasz '.py' do klastra lub do samodzielnego komputera? Czy chcesz rejestrować zdarzenia od każdego pracownika lub tylko od klienta? – jocerfranquiz

Odpowiedz

-1

W moim środowisku Python dev (pojedyncza konfiguracja Spark maszyna) Używam tego:

import logging 


def do_my_logging(log_msg): 

    logger = logging.getLogger('__FILE__') 
    logger.warning('log_msg = {}'.format(log_msg)) 

do_my_logging('Some log message') 

który działa za pomocą skrypt spark-submit.

+0

Jeśli to -1, to dobrze byłoby dodać w komentarzach powód, dla którego ... jeśli jest to nieodpowiednia odpowiedź, wtedy ją usunę. –