Úprava a uložení datových rámců
Apache Spark poskytuje objekt datového rámce jako primární strukturu pro práci s daty. Datové rámce můžete použít k dotazování a transformaci dat a zachování výsledků v datovém jezeře. K načtení dat do datového rámce použijete funkci spark.read , zadáte formát souboru, cestu a volitelně schéma dat, která se mají číst. Například následující kód načte data ze všech souborů .csv ve složce orders do datového rámce s názvem order_details a pak zobrazí prvních pět záznamů.
order_details = spark.read.csv('/orders/*.csv', header=True, inferSchema=True)
display(order_details.limit(5))
Transformace datové struktury
Po načtení zdrojových dat do datového rámce můžete k transformaci použít metody objektu datového rámce a funkce Sparku. Mezi typické operace v datovém rámci patří:
- Filtrování řádků a sloupců
- Přejmenování sloupců
- Vytváření nových sloupců, často odvozených od existujících sloupců
- Nahrazení hodnot null nebo jiných hodnot
V následujícím příkladu kód používá split
funkci k oddělení hodnot ve sloupci CustomerName do dvou nových sloupců s názvem FirstName a LastName. Pak použije metodu drop
k odstranění původního sloupce CustomerName .
from pyspark.sql.functions import split, col
# Create the new FirstName and LastName fields
transformed_df = order_details.withColumn("FirstName", split(col("CustomerName"), " ").getItem(0)).withColumn("LastName", split(col("CustomerName"), " ").getItem(1))
# Remove the CustomerName field
transformed_df = transformed_df.drop("CustomerName")
display(transformed_df.limit(5))
Pomocí plného výkonu knihovny Spark SQL můžete transformovat data filtrováním řádků, odvozením, odebráním, přejmenováním sloupců a použitím dalších požadovaných úprav dat.
Uložení transformovaných dat
Jakmile je datový rámec v požadované struktuře, můžete výsledky uložit do podporovaného formátu ve vašem datovém jezeře.
Následující příklad kódu uloží datový rámec do souboru parquet v datovém jezeře a nahradí všechny existující soubory se stejným názvem.
transformed_df.write.mode("overwrite").parquet('/transformed_data/orders.parquet')
print ("Transformed data saved!")
Poznámka:
Formát Parquet je obvykle upřednostňovaný pro datové soubory, které použijete k další analýze nebo příjmu dat do analytického úložiště. Parquet je velmi efektivní formát, který podporuje většina rozsáhlých systémů pro analýzu dat. V některých případech může být vaším požadavkem na transformaci dat jednoduše převod dat z jiného formátu (například CSV) na Parquet!