Вступ до іскрових наборів даних

Набір даних - це структура даних у Spark SQL, яка забезпечує безпеку типу компіляції, об'єктно-орієнтований інтерфейс, а також оптимізацію Spark SQL.

Концептуально це таблична структура пам'яті, що має рядки та стовпці, яка розподілена по декількох вузлах, таких як Dataframe.

Це розширення Dataframe. Основна відмінність між Набором даних і DataFrame полягає в тому, що набори даних сильно набрані.

(Набір даних) = (Dataframe + безпека типу компіляції)

Набір даних був випущений в Spark 1.6 як експериментальний API. І Dataframe, і Dataset є уніфікованими у версії Spark 2.0, і Dataframe стає псевдонімом для набору даних (рядок).

Рамка даних = Набір даних (рядок)

Для чого нам потрібен іскровий набір даних?

Щоб мати чітке розуміння набору даних, ми повинні почати з трохи історії іскри та її еволюції.

RDD - ядро ​​Spark. Натхненний SQL і для полегшення роботи, Dataframe був створений у верхній частині RDD. Рамка даних еквівалентна таблиці в реляційній базі даних або DataFrame в Python.

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

Dataframe забезпечує автоматичну оптимізацію, але йому не вистачає безпеки типу компіляції.

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

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

Оскільки набір даних має безпеку для компіляції, тому він підтримується лише на мові компіляції (Java та Scala), але не на інтерпретованій мові (R & Python). Але API Spark Dataframe доступний на всіх чотирьох мовах (Java, Scala, Python & R), підтримуваних Spark.

Мова, що підтримується SparkAPI DataframeAPI набору даних
Мова складеної (Java та Scala)ТАКТАК
Інтерпретована мова (R & Python)ТАКНІ

Як створити іскровий набір даних?

Існує кілька способів створення набору даних на основі використання

1. Спочатку створіть SparkSession

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

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

  • Щоб створити набір даних за допомогою базової структури даних, таких як Діапазон, Послідовність, Список тощо:

Використання діапазону

Використання послідовності

Використання списку

  • Щоб створити набір даних, використовуючи послідовність класів випадків, викликавши метод .toDS ():

  • Щоб створити набір даних із RDD за допомогою .toDS ():

  • Щоб створити набір даних із Dataframe за допомогою класу Case:

  • Щоб створити набір даних із Dataframe за допомогою Tuples:

2. Операції на іскровому наборі даних

  1. Приклад підрахунку слів

  1. Перетворити іскровий набір даних у рамку даних

Ми також можемо конвертувати набір даних Spark у Datafame та використовувати API Dataframe, як показано нижче:

Особливості іскрового набору даних

  1. Тип безпеки

Набір даних забезпечує безпеку типу компіляції за часом. Це означає, що синтаксис, а також помилки аналізу програми перевірятимуться під час компіляції перед її запуском.

  1. Незмінюваність

Набір даних також незмінний, як RDD і Dataframe. Це означає, що ми не можемо змінити створений набір даних. Кожен раз, коли створюється новий набір даних, коли будь-яке перетворення застосовується до набору даних.

  1. Схема

Набір даних - це таблична структура в пам'яті, що має рядки та іменовані стовпці.

  1. Продуктивність та оптимізація

Як і Dataframe, набір даних також використовує оптимізацію каталізатора для створення оптимізованого логічного та фізичного плану запитів.

  1. Мова програмування

Набір даних api присутній лише в Java та Scala, які є компільованими мовами, але не в Python, який є інтерпретованою мовою.

  1. Ледача оцінка

Як і RDD та Dataframe, набір даних також виконує ледачу оцінку. Це означає, що обчислення відбувається лише тоді, коли виконується дія. Іскра створює плани лише на етапі трансформації.

  1. Серіалізація та вивезення сміття

Іскра даних не використовує стандартні серіалізатори (Kryo або Java серіалізація). Натомість, він використовує швидкі кодери пам'яті Tungsten, які розуміють внутрішню структуру даних і можуть ефективно перетворювати об'єкти у внутрішнє бінарне сховище. Він використовує позабірну серіалізацію даних за допомогою вольфрамового кодера, а отже, немає необхідності в збиранні сміття.

Висновок

Набір даних є найкращим як для RDD, так і для Dataframe. RDD забезпечує безпеку типу компіляції за часом, але немає автоматичної оптимізації. Dataframe забезпечує автоматичну оптимізацію, але йому не вистачає безпеки типу компіляції. Набір даних забезпечує як безпеку типу компіляції, так і автоматичну оптимізацію. Отже, набір даних є найкращим вибором для розробників Spark, що використовують Java або Scala.

Рекомендовані статті

Це посібник із іскрових наборів даних. Тут ми обговорюємо, як створити іскровий набір даних декількома способами за допомогою прикладів та функцій. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Команди іскрової оболонки
  2. Питання інтерв'ю
  3. Кар'єра в іскрі
  4. Іскрова стрічка
  5. Різні операції, пов'язані з кортежами
  6. Іскровий кадр даних SQL
  7. Типи приєднань до Spark SQL (приклади)
  8. Посібник зі списку команд оболонки Unix
  9. Топ-6 компонентів іскри

Категорія: