ContextCleaner: Очищенный аккумулятор, что это значит в scala spark?

#apache-spark

#apache-искра #apache-spark

Вопрос:

Когда я запускаю свою программу spark, я вижу этот вывод, и чтобы замедлить его до завершения, что это означает в данном контексте?

 19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 82
19/04/01 15:34:24 INFO ContextCleaner: Cleaned shuffle 0
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 69
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 30
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 40
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 61
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 41
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 52
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 29
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 31
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 57
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 60
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 87
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 79
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 78
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 84
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 34
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 49
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 75
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 88
19/04/01 15:34:24 INFO ContextCleaner: Cleaned accumulator 48
  

Deps, который я использую

 name := "BigData"

version := "0.1"

scalaVersion := "2.11.12"

libraryDependencies  = "com.github.tototoshi" %% "scala-csv" % "1.3.5"
// https://mvnrepository.com/artifact/org.apache.spark/spark-core
libraryDependencies  = "org.apache.spark" %% "spark-core" % "2.4.0"

// https://mvnrepository.com/artifact/org.apache.spark/spark-sql
libraryDependencies  = "org.apache.spark" %% "spark-sql" % "2.4.0"
// https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc
libraryDependencies  = "com.microsoft.sqlserver" % "mssql-jdbc" % "6.1.0.jre8"
libraryDependencies  = "com.databricks" % "spark-xml_2.11" % "0.4.1"

// https://mvnrepository.com/artifact/com.typesafe.akka/akka-actor
libraryDependencies  = "com.typesafe.akka" %% "akka-actor" % "2.5.19"
// https://mvnrepository.com/artifact/com.typesafe.akka/akka-http
libraryDependencies  = "com.typesafe.akka" %% "akka-http" % "10.1.5"
// https://mvnrepository.com/artifact/com.typesafe.akka/akka-stream
libraryDependencies  = "com.typesafe.akka" %% "akka-stream" % "2.5.19"

// https://mvnrepository.com/artifact/org.apache.livy/livy-core
libraryDependencies  = "org.apache.livy" %% "livy-core" % "0.5.0-incubating"

dependencyOverrides  = "com.fasterxml.jackson.core" % "jackson-core" % "2.9.4"
dependencyOverrides  = "com.fasterxml.jackson.core" % "jackson-databind" % "2.9.4"
dependencyOverrides  = "com.fasterxml.jackson.module" % "jackson-module-scala_2.11" % "2.9.4"
// https://mvnrepository.com/artifact/net.liftweb/lift-json
libraryDependencies  = "net.liftweb" %% "lift-json" % "3.2.0"

// https://mvnrepository.com/artifact/org.json4s/json4s-jackson
libraryDependencies  = "org.json4s" %% "json4s-jackson" % "3.6.5"

// https://mvnrepository.com/artifact/org.json4s/json4s-native
libraryDependencies  = "org.json4s" %% "json4s-native" % "3.6.5"

// https://mvnrepository.com/artifact/oracle/xdb

//libraryDependencies  = "oracle" % "xdb" % "1.0"
  

Комментарии:

1. Какую версию Spark вы используете? Это может быть связано: issues.apache.org/jira/browse/SPARK-18991

2. Я использую эту версию 2.4.0

Ответ №1:

Вы можете использовать приведенные ниже свойства, чтобы отключить ContextCleaner

 spark.cleaner.referenceTracking false
spark.cleaner.referenceTracking.blocking false
spark.cleaner.referenceTracking.blocking.shuffle false
spark.cleaner.referenceTracking.cleanCheckpoints false 
  

Однако, если вы работаете на 2.1, нет необходимости явно устанавливать эти свойства

Вы можете получить больше информации от ContextCleaner

https://books.japila.pl/apache-spark-internals/apache-spark-internals/core/ContextCleaner.html

Комментарии:

1. Привет, спасибо за ответ! не могли бы вы сказать мне, пожалуйста, как я могу изменить это в приложении pyspark? должен ли я изменить это во время выполнения, в spark-submit ? или есть какой-либо другой вариант?

2. Здравствуйте, вы можете пройти с помощью команды spark-submit . Передайте вышеуказанные свойства spark в команду раздела —conf : ./bin/spark-submit —class <main-class> —master <master-url> —deploy-mode <deploy-mode> —conf <ключ>=<значение> <application-jar> [аргументы приложения] . Для получения дополнительной информации обратитесь к ссылке ниже: spark.apache.org/docs/latest/submitting-applications.html

Ответ №2:

ContextCleaner запускается на драйвере. Он создается и сразу запускается при запуске SparkContext. Поток очистки контекста, который очищает RDD, перемешивание и широковещательные состояния, аккумуляторы (используя метод keepCleaning). context-cleaner-периодический-gc для запроса сборщика мусора JVM.Периодические запуски запускаются при запуске ContextCleaner и останавливаются при остановке ContextCleaner.