All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.spark.odkl.SparkUtils.scala Maven / Gradle / Ivy

package org.apache.spark.odkl

import org.apache.spark.rdd.RDDOperationScope
import org.apache.spark.util.ClosureCleaner
import org.apache.spark.SparkContext

/**
 * Proxy class that allows to access private functionality from package `org.apache.spark`.
 *
 * Created by vyacheslav.baranov on 17/06/15.
 */
object SparkUtils {

  /**
   * Cleans closure of a function of unused/non-serializable objects.
   *
   * @see [[org.apache.spark.SparkContext.clean]]
   * @param f
   * @param checkSerializable
   * @tparam F
   * @return
   */
  def clean[F <: AnyRef](f: F, checkSerializable: Boolean = true): F = {
    ClosureCleaner.clean(f, checkSerializable)
    f
  }

  /**
   * Used to improve readability of a stage in Spark Web UI.
   *
   * @see [[org.apache.spark.rdd.RDD.withScope]]
   * @param sc
   * @param body
   * @tparam U
   * @return
   */
  def withScope[U](sc: SparkContext, allowNesting: Boolean = false)(body: => U): U = {
    RDDOperationScope.withScope[U](sc, allowNesting)(body)
  }

  /**
   * Returns the classloader of current thread or the classloader that loaded this jar
   *
   * @return
   */
  def getContextClassLoader: ClassLoader = {
    Option(Thread.currentThread().getContextClassLoader).getOrElse(getClass.getClassLoader)
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy