Práce s daty pomocí Spark SQL
Rozhraní API datového rámce je součástí knihovny Spark s názvem Spark SQL, která datovým analytikům umožňuje dotazovat a manipulovat s daty pomocí výrazů SQL.
Vytváření databázových objektů v katalogu Spark
Katalog Sparku je metastor pro relační datové objekty, jako jsou zobrazení a tabulky. Modul runtime Sparku může pomocí katalogu bezproblémově integrovat kód napsaný v jakémkoli jazyce podporovaném sparkem s výrazy SQL, které můžou být pro některé datové analytiky nebo vývojáře přirozenější.
Jedním z nejjednodušších způsobů, jak zpřístupnit data v datovém rámci pro dotazování v katalogu Spark, je vytvořit dočasné zobrazení, jak je znázorněno v následujícím příkladu kódu:
df.createOrReplaceTempView("products_view")
Zobrazení je dočasné, což znamená, že se automaticky odstraní na konci aktuální relace. Můžete také vytvořit tabulky , které jsou trvalé v katalogu a definovat databázi, která se dá dotazovat pomocí Spark SQL.
Tabulky jsou struktury metadat, které ukládají jejich podkladová data do umístění úložiště přidruženého k katalogu. V Microsoft Fabric se data pro spravované tabulky ukládají do umístění Úložiště tabulek zobrazených ve vašem datovém jezeře a všechny tabulky vytvořené pomocí Sparku jsou tam uvedené.
Prázdnou tabulku můžete vytvořit pomocí spark.catalog.createTable
metody nebo můžete datový rámec uložit jako tabulku pomocí metody saveAsTable
. Odstraněním spravované tabulky se odstraní také její podkladová data.
Následující kód například uloží datový rámec jako novou tabulku s názvem products:
df.write.format("delta").saveAsTable("products")
Poznámka:
Katalog Spark podporuje tabulky založené na souborech v různých formátech. Upřednostňovaný formát v Microsoft Fabric je rozdíl, což je formát pro relační datovou technologii ve Sparku s názvem Delta Lake. Tabulky Delta podporují funkce, které se běžně vyskytují v relačních databázových systémech, včetně transakcí, správy verzí a podpory streamovaných dat.
Kromě toho můžete pomocí spark.catalog.createExternalTable
metody vytvořit externí tabulky. Externí tabulky definují metadata v katalogu, ale získávají podkladová data z externího umístění úložiště; obvykle se jedná o složku v oblasti úložiště Soubory v jezeře. Odstranění externí tabulky neodstraní podkladová data.
Tip
Stejnou techniku dělení můžete použít u tabulek Delta Lake, jak je popsáno u souborů parquet v předchozí lekci. Dělení tabulek může vést k lepšímu výkonu při dotazování.
Použití rozhraní Spark SQL API k dotazování dat
K dotazování dat v katalogu můžete použít rozhraní SPARK SQL API v kódu napsané v libovolném jazyce. Například následující kód PySpark používá dotaz SQL k vrácení dat z tabulky produktů jako datového rámce.
bikes_df = spark.sql("SELECT ProductID, ProductName, ListPrice \
FROM products \
WHERE Category IN ('Mountain Bikes', 'Road Bikes')")
display(bikes_df)
Výsledky z příkladu kódu by vypadaly podobně jako v následující tabulce:
ProductID | ProductName | ListPrice |
---|---|---|
771 | Mountain-100 Silver, 38 | 3399.9900 |
839 | Road-750 Black, 52 | 539.9900 |
... | ... | ... |
Použití kódu SQL
Předchozí příklad ukazuje, jak pomocí rozhraní Spark SQL API vkládat výrazy SQL do kódu Sparku. V poznámkovém bloku můžete pomocí %%sql
magie také spustit kód SQL, který se dotazuje na objekty v katalogu, například takto:
%%sql
SELECT Category, COUNT(ProductID) AS ProductCount
FROM products
GROUP BY Category
ORDER BY Category
Příklad kódu SQL vrátí sadu výsledků, která se automaticky zobrazí v poznámkovém bloku jako tabulka:
Kategorie | ProductCount |
---|---|
Bib-Shorts | 3 |
Stojany na kola | 0 |
Kolové stojany | 0 |
... | ... |