Іскровий кадр даних SQL

Рамка даних, схожа на RDD, - це абстракція, що надається для структурованих даних у бібліотеці Spark SQL. Це розподілений набір даних, який можна вважати таблицею у реляційній базі даних із доданою схемою. Його також можна визначити як колекцію названих стовпців. Spark SQL - одна з бібліотек, доступних у стеку Spark, яка містить інформацію про структуру та обчислення, що виконуються на даних. Ця додаткова інформація використовується для оптимізації. Фрейм даних містить переваги RDD разом із методами оптимізації, і цей API доступний у Python, R, Scala та Java.

Різні джерела, які генерують кадр даних:

  • Існуючий RDD
  • Структуровані файли даних та бази даних
  • Столи вуликів

Потреба у фреймі даних

Іскра-спільнота завжди намагалася наблизити структуру до даних, де іскрові рамки даних SQL - це кроки, зроблені в цьому напрямку. Початковий API іскри, RDD призначений для неструктурованих даних, де обчислення та дані непрозорі. Таким чином, виникла вимога створити API, який здатний забезпечити додаткові переваги оптимізації. Нижче наведено кілька вимог, які лягли в основу даних

  • Структуровані та напівдані
  • Кілька джерел даних
  • Інтеграція з декількома мовами програмування
  • Кількість операцій, які можна виконати над такими даними, як select & filter.

Як створити Spark SQL Dataframe?

Перш ніж зрозуміти способи створення фрейму даних, важливо зрозуміти іншу концепцію, завдяки якій іскрові програми створюють кадр даних з різних джерел. Ця концепція відома як sparksession і є вхідною точкою для всіх функцій іскри. Раніше нам доводилося створювати sparkConf, sparkContext або sqlContext окремо, але за допомогою sparksession, всі вони інкапсульовані за один сеанс, коли іскра виступає в якості об'єкта sparksession.

import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("SampleWork")
.config("config.option", "value")
.getOrCreate()

Шляхи створення фрейму даних

  1. З існуючих RDD

Існує два способи створення Dataframe за допомогою RDD. Один із способів - це відображення, яке автоматично визначає схему даних, а другий підхід - це створити схему програмно, а потім застосувати до RDD.

  • Шляхом наведення схеми

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

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
case class Transport(AutoName: String, year: Int)
val Vehicle = sc.textFile("//path//").map(_.split(", ")).map(p => Transport(p(0), p(1)).toDF()

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

  • Програмно вказуючи схему

Можуть бути випадки, коли ми заздалегідь не знаємо про схему або сценарії, коли класи справ не можуть приймати більше 22 полів. У таких умовах ми використовуємо підхід програмного створення схеми. По-перше, RDD рядків створюється з початкового RDD, тобто перетворює rdd об'єкт з rdd (t) в rdd (рядок). Потім створіть схему, використовуючи об’єкти StructType (Таблиця) та StructField (Поле). Ця схема застосовується до RDD рядків за допомогою методу createDataFrame, який нагадує структуру rdd (рядок), створений раніше.

val Vehicle = sc.textFile("//path")
import org.apache.spark.sql._
val schema = StructType(Array(StructField("AutoName", StringType, true), StructField("Year", IntegerType, true)))
scala> val rowRDD = vehicle.map(_.split(", ")).map(p => org.apache.spark.sql.Row(p(0), p(1).toInt))
val vehicleSchemaRDD = sqlContext.applySchema(rowRDD, schema)

  1. Через джерела даних

Spark дозволяє створювати фрейми даних через безліч джерел, таких як вулик, json, паркет, csv та текстові файли, які також можуть бути використані для створення фреймів даних.

Val file=sqlContext.read.json(“path to the json file”)
Val file=sqlContext.read.csv(“path to the json file”)
Val file=sqlContext.read.text(“path to the json file”)
val hiveData = new org.apache.spark.sql.hive.HiveContext(sc)
val hiveDF = hiveData.sql(“select * from tablename”)

Операції з DataFrame

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

Файл, що розглядається, - це фрейм даних, який створено з CSV-файлу з двома стовпцями - FullName та AgePerPA

  1. printSchema () - для перегляду структури схеми

file.printSchema()
// |-- AgePerPA: long (nullable = true)
// |-- FullName: string (nullable = true)

  1. select- Подібно до оператора select у SQL, демонструє дані, як зазначено у операторі select.

file.select("FullName").show()
// +-------+
// | name|
// +-------+
// |Sam|
// |Jodi|
// | Bala|
// +-------+

  1. Фільтр - для перегляду відфільтрованих даних із фрейму даних. Умова, зазначена в команді

file.filter($"AgePerPA" > 18).show()

  1. GroupBy - для групування значень

file.groupBy("AgePerPA").count().show()

  1. show () - для відображення вмісту фрейму даних

file.show()

Обмеження

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

Висновок - Іскра Spark Dataframe

Ця стаття дає загальну картину (потреба, створення, обмеження) про API фрейму даних Spark SQL. Завдяки популярності API фреймворків даних Spark SQL залишається однією з широко використовуваних бібліотек. Як і RDD, він надає такі функції, як відмова від помилок, лінива оцінка, обробка пам'яті разом з деякими додатковими перевагами. Це можна визначити як дані, розподілені по кластері в табличній формі. Таким чином, кадр даних матиме схему, пов'язану з ним, і його можна створити через декілька джерел через об'єкт іскрової сесії.

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

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

  1. Команди іскрової оболонки
  2. Курсори в SQL
  3. Обмеження SQL
  4. База даних у SQL
  5. Типи приєднань до Spark SQL (приклади)
  6. Посібник зі списку команд оболонки Unix

Категорія: