tutorial started spark significado getting java apache-spark dataset rdd apache-spark-dataset

started - ¿Diferencia entre SparkContext, JavaSparkContext, SQLContext y SparkSession?



spark sql (3)

Explicación del código fuente de la chispa en branch-2.1

SparkContext: Punto de entrada principal para la funcionalidad Spark. Un SparkContext representa la conexión a un clúster Spark y se puede utilizar para crear RDD, acumuladores y variables de difusión en ese clúster.

Solo un SparkContext puede estar activo por JVM. Debe stop() el SparkContext activo antes de crear uno nuevo. Esta limitación puede eventualmente ser eliminada; vea SPARK-2243 para más detalles.

JavaSparkContext: una versión compatible con Java de [[org.apache.spark.SparkContext]] que devuelve [[org.apache.spark.api.java.JavaRDD]] y funciona con colecciones de Java en lugar de las de Scala.

Solo un SparkContext puede estar activo por JVM. Debe stop() el SparkContext activo antes de crear uno nuevo. Esta limitación puede eventualmente ser eliminada; vea SPARK-2243 para más detalles.

SQLContext: el punto de entrada para trabajar con datos estructurados (filas y columnas) en Spark 1.x.

A partir de Spark 2.0, esto se reemplaza por [[SparkSession]]. Sin embargo, mantenemos la clase aquí por compatibilidad con versiones anteriores.

SparkSession: el punto de entrada a la programación de Spark con el Dataset y la API DataFrame.

  1. ¿Cuál es la diferencia entre SparkContext, JavaSparkContext, SQLContext y SparkSession ?
  2. ¿Hay algún método para convertir o crear un Contexto usando una SparkSession ?
  3. ¿Puedo reemplazar completamente todos los Contextos usando una sola entrada SparkSession ?
  4. ¿Todas las funciones en SQLContext , SparkContext y JavaSparkContext también están en SparkSession ?
  5. Algunas funciones como parallelize tienen diferentes comportamientos en SparkContext y JavaSparkContext . ¿Cómo se comportan en SparkSession ?
  6. ¿Cómo puedo crear lo siguiente usando una SparkSession ?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • Dataset

¿Existe un método para transformar un JavaPairRDD en un Dataset o un Dataset en un JavaPairRDD ?


sparkContext es un punto de entrada de implementación de Scala y JavaSparkContext es un contenedor de java de sparkContext .

SQLContext es el punto de entrada de SparkSQL que se puede recibir desde sparkContext Anterior a 2.xx, RDD, DataFrame y Data-set fueron tres abstracciones de datos diferentes. Desde Spark 2.xx, las tres abstracciones de datos están unificadas y SparkSession es la entrada unificada. Punto de chispa.

Una nota adicional es, RDD destinado a datos no estructurados, datos fuertemente tipados y DataFrames son datos estructurados y vagamente escritos. Puedes check

¿Hay algún método para convertir o crear Contexto usando Sparksession?

sí. su sparkSession.sparkContext() y para SQL, sparkSession.sqlContext()

¿Puedo reemplazar completamente todo el contexto usando una sola entrada SparkSession?

sí. Puede obtener los contextos respectivos de sparkSession.

¿Todas las funciones en SQLContext, SparkContext, JavaSparkContext, etc. se agregan en SparkSession?

No directamente. tienes que obtener el contexto respectivo y utilizarlo. Algo así como compatibilidad con versiones anteriores

¿Cómo usar tal función en SparkSession?

Obtener contexto respectivo y hacer uso de él.

¿Cómo crear lo siguiente usando SparkSession?

  1. RDD se puede crear desde sparkSession.sparkContext.parallelize(???)
  2. JavaRDD mismo se aplica con esto, pero en la implementación de Java
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. Dataset lo que devuelve sparkSession es Dataset si se trata de datos estructurados.

Spark Context es la clase en la API de Spark, que es la primera etapa para construir la aplicación de la chispa. La funcionalidad del contexto de chispa es crear memoria en la memoria RAM, lo que llamamos memoria de controlador, la asignación de la cantidad de ejecutores y núcleos en resumen, todo se trata de la administración del clúster. Se puede usar Spark Context para crear RDD y variables compartidas. Para acceder a esto necesitamos crear objeto de ello.

De esta manera podemos crear Spark Context :: var sc = new SparkContext ()

Sesión de chispa Este es un nuevo objeto agregado desde la chispa 2.x que reemplaza al contexto Sql y al contexto Hive. Anteriormente teníamos dos opciones, como una es Sql Context, que es la forma de realizar operaciones de SQL en Dataframe, y la segunda es Hive Context, que administra las cosas relacionadas con la conectividad de Hive y recupera / inserta los datos desde / hasta las tablas de Hive.

Desde que llegó la versión 2.x Podemos crear SparkSession para la operación de SQL en Dataframe y si tiene algún trabajo relacionado con Hive, simplemente llame al método enablehivesupport () y luego puede usar SparkSession para las operaciones SQL relacionadas con Dataframe y hive.

De esta manera podemos crear la operación SparkSession para Sql en Dataframe

val sparksession = SparkSession.builder (). getOrCreate ();

La segunda forma es crear la operación SparkSession para Sql en Dataframe así como también en Hive Operation.

val sparkSession = SparkSession.builder (). enableHiveSupport (). getOrCreate ()