Úprava a uložení datových rámců

Dokončeno

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!