Modyfikowanie i zapisywanie ramek danych

Ukończone

Platforma Apache Spark udostępnia obiekt ramki danych jako podstawową strukturę do pracy z danymi. Ramki danych umożliwiają wykonywanie zapytań i przekształcanie danych oraz utrwalanie wyników w usłudze Data Lake. Aby załadować dane do ramki danych, należy użyć funkcji spark.read , określając format pliku, ścieżkę i opcjonalnie schemat danych do odczytu. Na przykład poniższy kod ładuje dane ze wszystkich plików CSV w folderze orders do ramki danych o nazwie order_details, a następnie wyświetla pięć pierwszych rekordów.

order_details = spark.read.csv('/orders/*.csv', header=True, inferSchema=True)
display(order_details.limit(5))

Przekształcanie struktury danych

Po załadowaniu danych źródłowych do ramki danych możesz użyć metod obiektu ramki danych i funkcji platformy Spark, aby je przekształcić. Typowe operacje na ramce danych obejmują:

  • Filtrowanie wierszy i kolumn
  • Zmienianie nazw kolumn
  • Tworzenie nowych kolumn, często pochodzących z istniejących
  • Zastępowanie wartości null lub innych wartości

W poniższym przykładzie kod używa split funkcji do oddzielenia wartości w kolumnie CustomerName na dwie nowe kolumny o nazwie FirstName i LastName. Następnie używa drop metody do usunięcia oryginalnej kolumny 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))

Możesz użyć pełnej możliwości biblioteki Spark SQL, aby przekształcić dane, filtrując wiersze, wyprowadzając, usuwając, zmieniając nazwy kolumn i stosując inne wymagane modyfikacje danych.

Zapisywanie przekształconych danych

Gdy ramka danych znajduje się w wymaganej strukturze, możesz zapisać wyniki w obsługiwanym formacie w usłudze Data Lake.

Poniższy przykład kodu zapisuje ramkę danych w pliku parquet w usłudze Data Lake, zastępując dowolny istniejący plik o tej samej nazwie.

transformed_df.write.mode("overwrite").parquet('/transformed_data/orders.parquet')
print ("Transformed data saved!")

Uwaga

Format Parquet jest zazwyczaj preferowany w przypadku plików danych, które będą używane do dalszej analizy lub pozyskiwania do magazynu analitycznego. Parquet to bardzo wydajny format obsługiwany przez większość systemów analizy danych na dużą skalę. W rzeczywistości czasami wymaganie dotyczące przekształcania danych może być po prostu konwertowanie danych z innego formatu (takiego jak CSV) na Parquet!