Práce s daty pomocí Spark SQL

Dokončeno

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
... ...