Raymond Raymond

Turn off INFO logs in Spark

event 2020-08-09 visibility 23,544 comment 0 insights toc
more_vert
insights Stats

Spark is a robust framework with logging implemented in all modules. Sometimes it might get too verbose to show all the INFO logs. This article shows you how to hide those INFO logs in the console output.

Spark logging level

Log level can be setup using function pyspark.SparkContext.setLogLevel.

The definition of this function is available here:

def setLogLevel(self, logLevel):
        """
        Control our logLevel. This overrides any user-defined log settings.
        Valid log levels include: ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN
        """
        self._jsc.setLogLevel(logLevel)

Set log level to WARN

The following code sets the log level to WARN

from pyspark.sql import SparkSession

appName = "Spark - Setting Log Level"
master = "local"

# Create Spark session
spark = SparkSession.builder \
    .appName(appName) \
    .master(master) \
    .getOrCreate()

spark.sparkContext.setLogLevel("WARN")

When running the script with some actions, the console still prints out INFO logs before setLogLevel function is called. 

20200809115318-image.png

Change Spark logging config file

Follow these steps to configure system level logging (need access to Spark conf folder):

  1. Navigate to Spark home folder.
  2. Go to sub folder conf for all configuration files. 
  3. Create log4j.properties file from template file  log4j.properties.template.
  4. Edit file log4j.properties to change default logging to WARN:
    20200809120027-image.png

Run the application again and the output is very clean as the following screenshot shows:

20200809120143-image.png

For Scala

The above system level Spark configuration will apply to all programming languages supported by Spark incl. Scala. 

If you want to change log type via programming way, try the following code in Scala:

spark = SparkSession.builder.getOrCreate()
spark.sparkContext.setLogLevel("WARN")

If you use Spark shell, you can directly access SparkContext via sc:

sc.setLogLevel("WARN")

20200809120807-image.png

Run Spark code

You can easily run Spark code on your Windows or UNIX-alike (Linux, MacOS) systems. Follow these articles to setup your Spark environment if you don't have one yet:

More from Kontext
comment Comments
No comments yet.

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts