Въведение в искровия набор от данни

Наборът от данни е структура от данни в Spark SQL, която осигурява безопасност от тип компилация, обектно-ориентиран интерфейс, както и оптимизация на Spark SQL.

Концептуално е таблична структура в паметта с редове и колони, която е разпределена в множество възли като Dataframe.

Това е разширение на Dataframe. Основната разлика между набора от данни и DataFrame е, че наборите от данни са силно набрани.

(Набор от данни) = (Dataframe + Тип на време за компилиране)

Наборът от данни беше пуснат в Spark 1.6 като експериментален API. Както Dataframe, така и Dataset са обединени във версия Spark 2.0 и Dataframe се превръща в псевдоним на Dataset (Row).

Dataframe = Набор от данни (ред)

Защо се нуждаем от набор от искри?

За да имаме ясно разбиране на Dataset, трябва да започнем с малко история на искрата и нейната еволюция.

RDD е ядрото на Spark. Вдъхновен от SQL и за да улесни нещата, Dataframe беше създаден в горната част на RDD. Dataframe е еквивалентен на таблица в релационна база данни или DataFrame в Python.

RDD осигурява безопасност на типа за компилиране, но липсва автоматична оптимизация в RDD.

Dataframe осигурява автоматична оптимизация, но липсва безопасността на типа за компилиране.

Наборът от данни се добавя като разширение на Dataframe. Наборът от данни съчетава функциите както на RDD (т.е. безопасност на типа за компилиране), така и на Dataframe (т.е. автоматична оптимизация на Spark SQL).

(RDD (Spark 1.0)) -> (Dataframe (Spark1.3)) -> (Набор от данни (Spark1.6))

Тъй като Dataset има безопасност за компилиране, следователно се поддържа само на компилиран език (Java и Scala), но не и на интерпретиран език (R & Python). Но API на Spark Dataframe е наличен на всичките четири езика (Java, Scala, Python & R), поддържани от Spark.

Език, поддържан от SparkAPI на DataframeAPI за набор от данни
Език на компилация (Java и Scala)ДАДА
Тълкуван език (R & Python)ДАНЕ

Как да създадете запален набор от данни?

Има множество начини за създаване на набор данни въз основа на usecase

1. Първо създайте SparkSession

SparkSession е единна входна точка за приложение за искра, която позволява взаимодействие с основна Spark функционалност и програмиране Spark с API на DataFrame и Dataset.

val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()

  • За да създадете база данни, използвайки основна структура на данни като диапазон, последователност, списък и т.н.:

Използване на Range

Използване на последователност

Използване на списък

  • За да създадете набор от данни, използвайки последователността от класове на случаите чрез извикване на .toDS () метод:

  • За да създадете база данни от RDD с помощта на .toDS ():

  • За да създадете базата данни от Dataframe с помощта на Case Class:

  • За да създадете базата данни от Dataframe с помощта на Tuples:

2. Операции на искровия набор от данни

  1. Пример за брой на думите

  1. Преобразуване на искра набора от данни в Dataframe

Можем също да преобразуваме Spark Dataset в Datafame и да използваме API на Dataframe, както е посочено по-долу:

Характеристики на Spark Dataset

  1. Тип Безопасност

Наборът от данни осигурява безопасност за тип на компилиране. Това означава, че синтаксисът, както и грешките в анализа на приложението, ще бъдат проверявани по време на компилиране, преди да се стартира.

  1. неизменност

Наборът от данни също е неизменен като RDD и Dataframe. Това означава, че не можем да променим създадения набор от данни. Всеки път, когато се създаде нов набор от данни, когато всяка трансформация се прилага към набора от данни.

  1. схема

Наборът от данни е таблична структура в паметта, която има редове и именани колони.

  1. Производителност и оптимизация

Подобно на Dataframe, Наборът от данни също използва Catalyst Optimization, за да генерира оптимизиран логически и физически план за заявки.

  1. Програмен език

Наборът api е наличен само в Java и Scala, които са компилирани езици, но не и в Python, който е интерпретиран език.

  1. Мързелива оценка

Подобно на RDD и Dataframe, наборът от данни също извършва ленивата оценка. Това означава, че изчислението се случва само когато се извършва действие. Spark прави само планове по време на фазата на трансформация.

  1. Сериализация и сметосъбиране

Искровият набор данни не използва стандартни сериализатори (Kryo или Java сериализация). Вместо това, той използва бързите енкодери в паметта на Tungsten, които разбират вътрешната структура на данните и могат ефективно да трансформират обекти във вътрешно двоично хранилище. Използва сериализация на данни извън тестото с помощта на волфрамов енкодер и следователно няма нужда от събиране на боклук.

заключение

Наборът от данни е най-доброто както за RDD, така и за Dataframe. RDD осигурява безопасност на типа за компилиране, но липсва автоматична оптимизация. Dataframe осигурява автоматична оптимизация, но липсва безопасността на типа за компилиране. Наборът от данни осигурява както безопасност на типа за компилиране, така и автоматична оптимизация. Следователно, наборът от данни е най-добрият избор за разработчиците на Spark, използващи Java или Scala.

Препоръчителни статии

Това е ръководство за Spark Dataset. Тук обсъждаме как да създадете искра набор от данни по няколко начина с примери и функции. Може да разгледате и следните статии, за да научите повече -

  1. Spark Shell Commands
  2. Искрови въпроси за интервю
  3. Кариера в Spark
  4. Искрено стрийминг
  5. Различни операции, свързани с Tuples
  6. Spark SQL Dataframe
  7. Видове съединения в Spark SQL (Примери)
  8. Ръководство за списъка на командите на Unix Shell
  9. Топ 6 компоненти на искрата

Категория: