Modyfikowanie i zapisywanie ramek danych
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!