Разница между sparkContext JavaSparkContext Sqlcontext SparkSession?

  1. в чем разница между sparkContext, javaSparkContext, SQLContext и SparkSession.?
  2. есть ли способ конвертировать или создавать контекст с помощью Sparksession ?
  3. могу ли я полностью заменить весь контекст, используя одну единственную запись SparkSession ?
  4. выполняет все функции в SQLContext, SparkContext,JavaSparkContext etc добавлены в SparkSession?
  5. некоторые функции, такие как parallelize имеет различное использование в SparkContext и JavaSparkContext. Как использовать такую функцию в SparkSession?
  6. как создать следующее С помощью SparkSession?

    • RDD
    • JavaRDD
    • JavaPairRDD
    • Dataset

есть ли какой-либо метод преобразования JavaPairRDD на Dataset или Dataset на JavaPairRDD?

3 ответов


sparkContext является точкой входа в реализацию Scala и JavaSparkContext является Java-оболочкой sparkContext.

SQLContext является точкой входа SparkSQL, который может быть получен от sparkContext.До 2.х.х, РДД ,таблицы данных и набора данных были три разных абстракций данных.С Искры 2.X. x, все три абстракции данных объединены и SparkSession является единой точкой входа Spark.

дополнительное Примечание: RDD предназначен для неструктурированных данных, строго типизированных данных и фреймов данных предназначены для структурированных и слабо типизированных данных. Ты можешь!--15-->Регистрация

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

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

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

да. вы можете получить соответствующие contexs от 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. Dataset что sparkSession возвращает Dataset если это структурированные данные.

объяснение Из исходного кода spark под веткой-2.1

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

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

JavaSparkContext: Дружественная к Java версия [[org.апаш.искра.SparkContext]], который возвращает [[org.апаш.искра.прикладной программный интерфейс.Ява.JavaRDD]]s и работает с коллекциями Java вместо Scala.

на JVM может быть активен только один SparkContext. Вы должны stop() активный SparkContext перед создание нового. Это ограничение может быть в конечном итоге удалено; Подробнее см. SPARK-2243.

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

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

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


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

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

Spark Session это новый объект, добавленный с spark 2.x который является заменой контекста Sql и контекста Hive. Ранее у нас было два варианта: один-контекст Sql, который является способом выполнения операции sql на Dataframe, а второй-контекст Hive, который управляет материалом, связанным с подключением Hive, и извлекает/вставляет данные из/в таблицы hive.

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

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

val sparksession=SparkSession.строитель.)(getOrCreate ();

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

val sparkSession=SparkSession.строитель.)(enableHiveSupport ().getOrCreate ()