web-dev-qa-db-fra.com

Différence entre SparkContext, JavaSparkContext, SQLContext et SparkSession?

  1. Quelle est la différence entre SparkContext,JavaSparkContext,SQLContext et SparkSession?
  2. Existe-t-il une méthode pour convertir ou créer un contexte à l'aide d'un SparkSession?
  3. Puis-je remplacer complètement tous les contextes en utilisant une seule entrée SparkSession?
  4. Toutes les fonctions dans SQLContext, SparkContext et JavaSparkContext sont-elles également dans SparkSession?
  5. Certaines fonctions comme parallelize ont des comportements différents dans SparkContext et JavaSparkContext. Comment se comportent-ils dans SparkSession?
  6. Comment puis-je créer ce qui suit à l'aide d'un SparkSession?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • Dataset

Existe-t-il une méthode pour transformer un JavaPairRDD en Dataset ou un Dataset en JavaPairRDD?

30
Mostwanted Mani

sparkContext est un Scala point d'entrée d'implémentation et JavaSparkContext est un Java wrapper de sparkContext.

SQLContext est le point d'entrée de SparkSQL qui peut être reçu de sparkContext. Avant 2.xx, RDD, DataFrame et Data-set étaient trois abstractions de données différentes. Depuis Spark 2.xx, les trois abstractions de données sont unifiées et SparkSession est le point d'entrée unifié de Spark.

Une note supplémentaire est, RDD destiné aux données non structurées, les données fortement typées et les DataFrames sont destinés aux données structurées et vaguement typées. Vous pouvez vérifier

Existe-t-il une méthode pour convertir ou créer un contexte à l'aide de Sparksession?

oui. sa sparkSession.sparkContext() et pour SQL, sparkSession.sqlContext()

Puis-je remplacer complètement tout le contexte en utilisant une seule entrée SparkSession?

oui. vous pouvez obtenir les contextes respectifs de sparkSession.

Toutes les fonctions de SQLContext, SparkContext, JavaSparkContext etc. sont-elles ajoutées dans SparkSession?

Pas directement. vous devez obtenir le contexte respectif et l'utiliser, quelque chose comme la compatibilité descendante

Comment utiliser une telle fonction dans SparkSession?

obtenir le contexte respectif et en faire usage.

Comment créer ce qui suit à l'aide de SparkSession?

  1. RDD peut être créé à partir de sparkSession.sparkContext.parallelize(???)
  2. JavaRDD s'applique de la même façon, mais dans Java implementation
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. Jeu de données renvoyé par sparkSession est un jeu de données s'il s'agit de données structurées.
29
Balaji Reddy

Explication de spark code source sous branch-2.1

SparkContext: Point d'entrée principal pour Spark. Un SparkContext représente la connexion à un cluster Spark, et peut être utilisé pour créer RDD, accumulateurs et variables de diffusion sur ce cluster.

Un seul SparkContext peut être actif par JVM. Vous devez stop() le SparkContext actif avant d'en créer un nouveau. Cette limitation peut éventuellement être supprimée; voir SPARK-2243 pour plus de détails.

JavaSparkContext: Une version Java-friendly de [[org.Apache.spark.SparkContext]] qui retourne [[org.Apache.spark.api.Java.JavaRDD]] et fonctionne avec Java collections au lieu de Scala celles.

Un seul SparkContext peut être actif par JVM. Vous devez stop() le SparkContext actif avant d'en créer un nouveau. Cette limitation peut éventuellement être supprimée; voir SPARK-2243 pour plus de détails.

SQLContext: Le point d'entrée pour travailler avec des données structurées (lignes et colonnes) dans Spark 1.x.

Depuis Spark 2.0, ceci est remplacé par [[SparkSession]]. Cependant, nous gardons la classe ici pour des raisons de compatibilité descendante.

SparkSession: Le point d'entrée de la programmation Spark avec l'API Dataset et DataFrame.

11
Deanzz

Spark Context est Class in Spark API qui est la première étape pour construire l'application spark. Fonctionnalité de spark context is to create memory in RAM we call this as driver memory, allocation of number of executers and cores in short its all about the cluster management. Spark Le contexte peut être utilisé pour créer un RDD et des variables partagées. Pour y accéder, nous devons en créer un objet.

De cette façon, nous pouvons créer Spark Context :: var sc = new SparkContext ()

Spark Session, c'est un nouvel objet ajouté depuis spark 2.x qui remplace le contexte SQL et le contexte Hive. Auparavant, nous avions deux options, dont une est le contexte SQL qui est Le moyen de faire l'opération SQL sur Dataframe et le second est le contexte Hive qui gère les éléments liés à la connectivité Hive et récupère/insère les données depuis/vers les tables Hive.

Depuis l'arrivée de 2.x, nous pouvons créer SparkSession pour l'opération SQL sur Dataframe et si vous avez un travail lié à Hive, appelez simplement la méthode enablehivesupport (), vous pouvez alors utiliser SparkSession pour les opérations SQL liées à Dataframe et Hive.

De cette façon, nous pouvons créer SparkSession pour une opération SQL sur Dataframe

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

La deuxième façon consiste à créer SparkSession pour une opération SQL sur Dataframe ainsi que Hive Operation.

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

1
Nilesh Shinde

Je vais parler de Spark version 2.x uniquement.

SparkSession: C'est un point d'entrée principal de votre spark application. Pour exécuter n'importe quel code sur votre spark, c'est la première chose que vous devez créer.

from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local").appName("Word Count")\
.config("spark.some.config.option", "some-value")\
.getOrCreate()

SparkContext: C'est un objet (propriété) interne de SparkSession. Il est utilisé pour interagir avec Low-Level API Grâce à SparkContext, vous pouvez créer RDD, accumlator et Broadcast variables.

dans la plupart des cas, vous n'aurez pas besoin de SparkContext. Vous pouvez obtenir SparkContext à partir de SparkSession

val sc = spark.sparkContext
0
Gaurang Shah