Разница между SparkContext, JavaSparkContext, SQLContext и SparkSession?

  1. В чем разница между SparkContext, JavaSparkContext, SQLContext и SparkSession?
  2. Есть ли способ конвертировать или создать контекст с помощью SparkSession?
  3. Могу ли я полностью заменить все контексты одной записью SparkSession?
  4. Все ли функции в SQLContext, SparkContext и JavaSparkContext также находятся в SparkSession?
  5. Некоторые функции, такие как parallelize, ведут себя по-разному в SparkContext и JavaSparkContext. Как они ведут себя в SparkSession?
  6. Как я могу создать следующее, используя SparkSession?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • Dataset

Есть ли способ превратить JavaPairRDD в Dataset или Dataset в JavaPairRDD?


person Manikandan Balasubramanian    schedule 05.05.2017    source источник


Ответы (5)


sparkContext — это точка входа в реализацию Scala, а JavaSparkContext — это Java-оболочка sparkContext.

SQLContext — это точка входа SparkSQL, которую можно получить из sparkContext. До 2.xx RDD, DataFrame и набор данных были тремя разными абстракциями данных. точка искры.

Дополнительное примечание: RDD предназначен для неструктурированных данных, строго типизированных данных, а DataFrames — для структурированных и слабо типизированных данных. Вы можете проверить

Есть ли способ конвертировать или создавать контекст с помощью Sparksession?

да. его sparkSession.sparkContext() и для SQL, sparkSession.sqlContext()

Можно ли полностью заменить весь контекст, используя одну запись SparkSession?

да. вы можете получить соответствующие контексты из sparkSession.

Все ли функции SQLContext, SparkContext, JavaSparkContext и т. д. добавлены в SparkSession?

Не напрямую. вам нужно получить соответствующий контекст и использовать его. Что-то вроде обратной совместимости

Как использовать такую ​​функцию в SparkSession?

получить соответствующий контекст и использовать его.

Как создать следующее с помощью SparkSession?

  1. RDD можно создать из sparkSession.sparkContext.parallelize(???)
  2. JavaRDD то же самое относится к этому, но в реализации Java
  3. JavaPairRDD sparkSession.sparkContext.parallelize(???).map(//making your data as key-value pair here is one way)
  4. Набор данных, который возвращает sparkSession, является набором данных, если это структурированные данные.
person Balaji Reddy    schedule 05.05.2017

Объяснение из исходного кода искры в ветке-2.1

SparkContext: основная точка входа для функций Spark. SparkContext представляет подключение к кластеру Spark и может использоваться для создания RDD, аккумуляторов и широковещательных переменных в этом кластере.

Для каждой JVM может быть активен только один SparkContext. Вы должны stop() активировать SparkContext перед созданием нового. Со временем это ограничение может быть снято; см. SPARK-2243 для более подробной информации.

JavaSparkContext. Подходящая для Java версия [[org.apache.spark.SparkContext]], которая возвращает [[org.apache.spark.api.java.JavaRDD]] и вместо этого работает с коллекциями Java. из Scala.

Для каждой JVM может быть активен только один SparkContext. Вы должны stop() активировать SparkContext перед созданием нового. Со временем это ограничение может быть снято; см. SPARK-2243 для более подробной информации.

SQLContext: точка входа для работы со структурированными данными (строками и столбцами) в Spark 1.x.

Начиная со Spark 2.0, он заменен на [[SparkSession]]. Однако мы сохраняем класс здесь для обратной совместимости.

SparkSession. Точка входа в программирование Spark с помощью Dataset и DataFrame API.

person Deanzz    schedule 05.05.2017
comment
Почему и где мы используем JavaSparkContext? - person Purushothaman Srikanth; 28.06.2021

Я буду говорить только о Spark версии 2.x.

SparkSession. Это основная точка входа вашего приложения spark. Чтобы запустить любой код на искре, это первое, что вы должны создать.

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

SparkContext. Это внутренний объект (свойство) SparkSession. Он используется для взаимодействия с Low-Level API. С помощью SparkContext вы можете создавать RDD, accumlator и Broadcast variables.

в большинстве случаев вам не понадобится SparkContext. Вы можете получить SparkContext от SparkSession

val sc = spark.sparkContext
person Gaurang Shah    schedule 04.09.2019

Контекст Spark — это класс в API Spark, который является первым этапом создания приложения spark. Функциональность контекста искры заключается в создании памяти в ОЗУ, которую мы называем памятью драйвера, распределении количества исполнителей и ядер, короче говоря, все это касается управления кластером. Контекст Spark можно использовать для создания RDD и общих переменных. Чтобы получить к нему доступ, нам нужно создать его объект.

Таким образом мы можем создать Spark Context :: var sc=new SparkContext()

Сеанс Spark. Это новый объект, добавленный после spark 2.x, который заменяет контекст Sql и контекст Hive. Ранее у нас было два варианта, например, Sql Context, который позволяет выполнять операцию sql с Dataframe, а второй — Hive Context, который управляет вещами, связанными с подключением Hive, и извлекает/вставляет данные из/в таблицы hive.

С момента появления 2.x мы можем создать SparkSession для операции SQL в Dataframe, и если у вас есть какая-либо работа, связанная с Hive, просто вызовите метод enablehivesupport(), после чего вы можете использовать SparkSession как для операций SQL, связанных с Dataframe, так и для куста.

Таким образом, мы можем создать SparkSession для операции Sql в Dataframe.

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

Второй способ — создать SparkSession для операции Sql в Dataframe, а также операцию Hive.

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

person Nilesh Shinde    schedule 05.04.2018

Контекст искры:

Начиная со Spark 1.x, Spark SparkContext является точкой входа в Spark и определяется в org. апач. spark и используется для программного создания Spark RDD, аккумуляторов и широковещательных переменных в кластере. Его объект sc является переменной по умолчанию, доступной в spark-shell, и его можно создать программно с помощью класса SparkContext.

SparkContext — это клиент среды исполнения spark. SparkContext — это точка входа для задания выполнения искры. SparkContext действует как мастер приложения spark.

Надеюсь, этот сайт с примерами Apache SparkContext будет вам полезен.

SparkSession:

Начиная со Spark 2.0, SparkSession стал точкой входа в Spark для работы с RDD, DataFrame и набором данных. До версии 2.0 SparkContext был точкой входа. Здесь я в основном сосредоточусь на объяснении того, что такое SparkSession, определяя и описывая, как создать сеанс Spark и используя переменную «spark» сеанса Spark по умолчанию из spark-shell.

В Apache spark2.0 и более поздних версиях сеанс spark — это новая точка входа для приложений spark. Все функции, предоставляемые контекстом искры, доступны в сеансе Spark. сеанс spark Предоставляет API для работы с наборами данных и фреймами данных. До Spark2.0:

Spark Context был точкой входа для искровых заданий. В то время RDD был одним из основных API, и он создавался и управлялся с помощью контекста spark. Для всех остальных API требовались разные контексты. Для SQL требовался контекст SQL.

Дополнительные примеры в реальном времени можно найти на странице Apache SparkSession.

SQLContext: в Spark версии 1.0 SQLContext (org.apache.spark.sql.SQLContext) является точкой входа в SQL для работы со структурированными данными (строками и столбцами), однако в версии 2.0 SQLContext был заменен. со SparkSession. Apache Spark SQLContext — это точка входа в SparkSQL, который представляет собой модуль Spark для структурированных данных (строки и столбцы) в Spark 1.x. обработка. Spark SQLContext инициализирован. Контекст SQL apache-spark — это точка входа Spark SQL, которую можно получить из контекста spark JavaSparkContext:.

JavaSparkContext Для JAVARDD делается то же самое, что и выше, но в реализации Java.

JavaSparkContext Удобная для Java версия [[org.apache.spark.SparkContext]], которая возвращает [[org.apache.spark.api.java.JavaRDD]] и работает с коллекциями Java вместо коллекций Scala.

person Kumar Spark    schedule 25.02.2021