J'ai installé Spark à l'aide du guide AWS EC2 et je peux lancer le programme correctement en utilisant le bin/pyspark
script pour accéder à l'invite Spark et je peux également effectuer le démarrage rapide avec succès.
Cependant, je ne peux pas pour la vie de moi comprendre comment arrêter toute la INFO
journalisation détaillée après chaque commande.
J'ai essayé presque tous les scénarios possibles dans le code ci-dessous (commenter, régler sur OFF) dans mon log4j.properties
fichier dans le conf
dossier dans lequel je lance l'application ainsi que sur chaque nœud et rien ne fait rien. J'obtiens toujours l' INFO
impression des instructions de journalisation après l'exécution de chaque instruction.
Je suis très confus avec la façon dont cela est censé fonctionner.
#Set everything to be logged to the console log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
Voici mon chemin de classe complet lorsque j'utilise SPARK_PRINT_LAUNCH_COMMAND
:
Commande Spark: /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp: /root/spark-1.0.1-bin-hadoop2/conf: /root/spark-1.0.1 -bin-hadoop2 / conf: /root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar: /root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX: MaxPermSize = 128m -Djava.library.path = -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit spark-shell --class org.apache.spark. repl. principal
contenu de spark-env.sh
:
#!/usr/bin/env bash
# This file is sourced when running various Spark programs.
# Copy it as spark-env.sh and edit that to configure Spark for your site.
# Options read when launching programs locally with
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
# - SPARK_CLASSPATH=/root/spark-1.0.1-bin-hadoop2/conf/
# Options read by executors and drivers running inside the cluster
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append
# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
# - MESOS_NATIVE_LIBRARY, to point to your libmesos.so if you use Mesos
# Options read in YARN client mode
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_EXECUTOR_INSTANCES, Number of workers to start (Default: 2)
# - SPARK_EXECUTOR_CORES, Number of cores for the workers (Default: 1).
# - SPARK_EXECUTOR_MEMORY, Memory per Worker (e.g. 1000M, 2G) (Default: 1G)
# - SPARK_DRIVER_MEMORY, Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)
# - SPARK_YARN_APP_NAME, The name of your application (Default: Spark)
# - SPARK_YARN_QUEUE, The hadoop queue to use for allocation requests (Default: ‘default’)
# - SPARK_YARN_DIST_FILES, Comma separated list of files to be distributed with the job.
# - SPARK_YARN_DIST_ARCHIVES, Comma separated list of archives to be distributed with the job.
# Options for the daemons used in the standalone deploy mode:
# - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
# - SPARK_WORKER_DIR, to set the working directory of worker processes
# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
Réponses:
Exécutez simplement cette commande dans le répertoire spark:
Modifiez log4j.properties:
Remplacez à la première ligne:
par:
Enregistrez et redémarrez votre shell. Cela fonctionne pour moi pour Spark 1.1.0 et Spark 1.5.1 sur OS X.
la source
Inspiré par le pyspark / tests.py que j'ai fait
L'appeler juste après la création de SparkContext a réduit les lignes stderr enregistrées pour mon test de 2647 à 163. Cependant, la création du SparkContext lui-même enregistre 163, jusqu'à
et je ne sais pas comment les ajuster par programme.
la source
Dans Spark 2.0, vous pouvez également le configurer dynamiquement pour votre application à l'aide de setLogLevel :
Dans la console pyspark , une
spark
session par défaut sera déjà disponible.la source
log4j
n'est pas accessible.Modifiez votre fichier conf / log4j.properties et modifiez la ligne suivante:
à
Une autre approche consisterait à:
Fireup spark-shell et tapez ce qui suit:
Vous ne verrez aucun journal après cela.
la source
la source
Pour PySpark, vous pouvez également définir le niveau de journalisation dans vos scripts avec
sc.setLogLevel("FATAL")
. À partir de la documentation :la source
Vous pouvez utiliser setLogLevel
la source
Cela peut être dû à la façon dont Spark calcule son chemin de classe. Mon intuition est que le
log4j.properties
fichier de Hadoop apparaît avant celui de Spark sur le chemin de classe, empêchant vos modifications de prendre effet.Si vous courez
puis Spark affichera le chemin de classe complet utilisé pour lancer le shell; dans mon cas, je vois
où se
/root/ephemeral-hdfs/conf
trouve en tête du chemin des classes.J'ai ouvert un problème [SPARK-2913] pour résoudre ce problème dans la prochaine version (je devrais avoir un correctif bientôt).
En attendant, voici quelques solutions de contournement:
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
àspark-env.sh
./root/ephemeral-hdfs/conf/log4j.properties
.la source
Spark 1.6.2:
Spark 2.x:
(l'étincelle étant la SparkSession)
Alternativement les anciennes méthodes,
Renommez
conf/log4j.properties.template
enconf/log4j.properties
dans Spark Dir.Dans le
log4j.properties
, remplacezlog4j.rootCategory=INFO, console
parlog4j.rootCategory=WARN, console
Différents niveaux de journalisation disponibles:
la source
Manière programmatique
Options disponibles
la source
Je l'ai utilisé avec Amazon EC2 avec 1 maître et 2 esclaves et Spark 1.2.1.
la source
Ajoutez simplement le paramètre ci-dessous à votre commande spark-submit
Cela remplace temporairement la valeur système uniquement pour ce travail. Vérifiez le nom exact de la propriété (log4jspark.root.logger ici) dans le fichier log4j.properties.
J'espère que cela aide, bravo!
la source
--conf spark.driver.extraJavaOptions='-Dlog4j.configuration=file:/home/foobar/log4j.properties
Cet extrait de code ci-dessous pour les utilisateurs de scala:
Option 1 :
Ci-dessous l'extrait que vous pouvez ajouter au niveau du fichier
Option 2 :
Option 3:
la source
La façon dont je le fais est:
à l'endroit où je lance le
spark-submit
script fairemodifiez le
INFO
niveau de journalisation souhaité, puis exécutez votrespark-submit
la source
cp /etc/spark/conf/log4j.properties.template .
Si vous souhaitez continuer à utiliser la journalisation (fonction de journalisation pour Python), vous pouvez essayer de fractionner les configurations pour votre application et pour Spark:
la source