0

J'ai un travail PySpark en cours d'exécution sur Google Dataproc.Enregistrement de Stackdriver pour PySpark

L'objectif est d'avoir les journaux de niveau application pour ce travail dans les journaux Stackdriver et de créer des métriques à partir de ces journaux.

Comment puis-je y parvenir? J'ai déjà changé les propriétés log4j de spark pour écrire dans /var/log/spark/spark-out.log, mais ce fichier ne semble pas contenir les données correctes.

Répondre

0

Si vous vous connectez à /var/log/spark/spark-out.log, il fera son chemin dans Stackdriver Logging.

La journalisation d'un opérateur vers sys.stderr ou sys.stdout sera également collectée par Stackdriver Logging sous la forme yarn-userlogs.

La sortie du pilote lui-même n'est pas collectée dans Stackdriver Logging par défaut. Cela dit, on pourrait configurer un enregistreur basé sur les fichiers dans le pilote pour se connecter à /var/log/spark/<filename>.log, et Stackdriver prendrait aussi ce fichier. Depuis le fichier de configuration:

# Fluentd config to tail the hadoop, hive, and spark message log. 
# Currently severity is a seperate field from the Cloud Logging log_level. 
<source> 
    type tail 
    format multi_format 
    <pattern> 
     format /^((?<time>[^ ]* [^ ]*) *(?<severity>[^ ]*) *(?<class>[^ ]*): (?<message>.*))/ 
     time_format %Y-%m-%d %H:%M:%S,%L 
    </pattern> 
    <pattern> 
     format none 
    </pattern> 
    path /var/log/hadoop*/*.log,/var/log/hive/*.log,/var/log/spark/*.log, 
    pos_file /var/tmp/fluentd.dataproc.hadoop.pos 
    refresh_interval 2s 
    read_from_head true 
    tag raw.tail.* 
</source>