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.
- ¿Cuál es la diferencia entre
SparkContext,
JavaSparkContext,
SQLContext
ySparkSession
? - ¿Hay algún método para convertir o crear un Contexto usando una
SparkSession
? - ¿Puedo reemplazar completamente todos los Contextos usando una sola entrada
SparkSession
? - ¿Todas las funciones en
SQLContext
,SparkContext
yJavaSparkContext
también están enSparkSession
? - Algunas funciones como
parallelize
tienen diferentes comportamientos enSparkContext
yJavaSparkContext
. ¿Cómo se comportan enSparkSession
? ¿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?
- RDD se puede crear desde
sparkSession.sparkContext.parallelize(???)
- JavaRDD mismo se aplica con esto, pero en la implementación de Java
- JavaPairRDD
sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
- 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 ()