Ändra och spara dataramar

Slutförd

Apache Spark tillhandahåller dataramobjektet som den primära strukturen för att arbeta med data. Du kan använda dataramar för att fråga och transformera data och spara resultaten i en datasjö. Om du vill läsa in data i en dataram använder du funktionen spark.read , anger filformat, sökväg och eventuellt schemat för de data som ska läsas. Följande kod läser till exempel in data från alla .csv filer i mappen orders till en dataram med namnet order_details och visar sedan de första fem posterna.

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

Transformera datastrukturen

När du har läst in källdata i en dataram kan du använda dataramobjektets metoder och Spark-funktioner för att transformera dem. Vanliga åtgärder i en dataram är:

  • Filtrera rader och kolumner
  • Byta namn på kolumner
  • Skapa nya kolumner, som ofta härleds från befintliga kolumner
  • Ersätta null- eller andra värden

I följande exempel använder split koden funktionen för att separera värdena i kolumnen CustomerName i två nya kolumner med namnet FirstName och LastName. Sedan använder den drop metoden för att ta bort den ursprungliga Kolumnen 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))

Du kan använda den fulla kraften i Spark SQL-biblioteket för att transformera data genom att filtrera rader, härleda, ta bort, byta namn på kolumner och tillämpa andra nödvändiga dataändringar.

Spara transformerade data

När din dataFrame är i den nödvändiga strukturen kan du spara resultatet i ett format som stöds i din datasjö.

I följande kodexempel sparas dataFrame i en parquet-fil i datasjön och ersätter alla befintliga filer med samma namn.

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

Anmärkning

Parquet-formatet föredras vanligtvis för datafiler som du använder för ytterligare analys eller inmatning i ett analysarkiv. Parquet är ett mycket effektivt format som stöds av de flesta storskaliga dataanalyssystem. I själva verket kan ditt krav på datatransformering ibland helt enkelt vara att konvertera data från ett annat format (till exempel CSV) till Parquet!