Работа с данными с помощью Spark SQL
API кадра данных входит в библиотеку Spark с именем Spark SQL, позволяя аналитикам данных использовать выражения SQL для запроса данных и управления ими.
Таблицы и каталог Spark
Каталог Spark — это хранилище метаданных для реляционных объектов данных, таких как представления и таблицы. Среда выполнения Spark может использовать каталог для простой и эффективной интеграции кода, написанного на любом языке, поддерживаемом Spark, с использованием выражений SQL, которые будут более привычными для многих аналитиков и разработчиков данных.
Одним из самых простых способов сделать данные в кадре данных доступными для запроса в каталоге Spark, является создание временного представления, как показано в следующем примере кода:
df.createOrReplaceTempView("products_view")
Представление является временным, то есть оно автоматически удаляется в конце текущего сеанса. Вы также можете создавать таблицы, которые сохраняются в каталоге, чтобы определить базу данных, которую можно запросить с помощью Spark SQL.
Таблицы — это структуры метаданных, базовые данные которых хранятся в расположении хранилища, связанном с каталогом. В Microsoft Fabric данные для управляемых таблиц хранятся в расположении хранилища таблиц , показанном в озере данных, и все таблицы, созданные с помощью Spark, перечислены там.
Можно создать пустую таблицу с помощью spark.catalog.createTable
метода или сохранить кадр данных в виде таблицы с помощью его saveAsTable
метода. При удалении управляемой таблицы также удаляются базовые данные.
Например, следующий код сохраняет кадр данных в виде новой таблицы с именем продуктов:
df.write.format("delta").saveAsTable("products")
Примечание.
Каталог Spark поддерживает таблицы на основе файлов в различных форматах. Предпочтительный формат в Microsoft Fabric — разностный формат, который является форматом для технологии реляционных данных в Spark с именем Delta Lake. Разностные таблицы поддерживают функции, часто найденные в реляционных системах баз данных, включая транзакции, управление версиями и поддержку потоковых данных.
Кроме того, можно создать внешние таблицы с помощью spark.catalog.createExternalTable
метода. Внешние таблицы определяют метаданные в каталоге, но получают их базовые данные из внешнего расположения хранилища; часто папка в области хранилища файлов озера. Удаление внешней таблицы не удаляет базовые данные.
Использование API SQL Spark для запроса данных
API SQL Spark можно использовать в коде, написанном на любом языке, чтобы запрашивать данные в каталоге. Например, следующий код PySpark использует SQL-запрос для возврата данных из таблицы продуктов в качестве кадра данных.
bikes_df = spark.sql("SELECT ProductID, ProductName, ListPrice \
FROM products \
WHERE Category IN ('Mountain Bikes', 'Road Bikes')")
display(bikes_df)
Результаты из примера кода будут выглядеть примерно так:
ProductID | НаименованиеПродукта | ПрейскурантнаяЦена |
---|---|---|
771 | Mountain-100 Silver, 38 | 3399.9900 |
839 | Road-750 Black, 52 | 539.9900 |
... | ... | ... |
Использование кода SQL
В предыдущем примере показано, как использовать API SQL Spark для внедрения выражений SQL в код Spark. В записной книжке можно также использовать магическую команду %%sql
для запуска SQL кода, который запрашивает объекты в каталоге, примерно следующим образом:
%%sql
SELECT Category, COUNT(ProductID) AS ProductCount
FROM products
GROUP BY Category
ORDER BY Category
Пример кода SQL возвращает набор результатов, который автоматически отображается в записной книжке в виде таблицы:
Категория | ProductCount |
---|---|
Велошорты | 3 |
Багажники для велосипедов | 1 |
Велосипедные стойки | 1 |
... | ... |