Ansluta till datakällor och mata in data
Du kan använda en Fabric-notebook-fil för att ansluta till data som lagras i Azure Blob Storage, en Azure SQL Database och andra lagringsalternativ. Genom att ansluta till en datakälla kan du använda data i analysprocesser även om de inte lagras i en Infrastruktursjöhus. Du kan också använda Spark-kod för att filtrera och bearbeta data innan du läser in dem i lakehouse, så att du kan använda Spark som ett kraftfullt verktyg för datainmatning i din Fabric-analysmiljö.
Ansluta till Azure Blob Storage
Följande PySpark-kod ansluter till data som lagras i Azure Blob Storage, läser data till en DataFrame och visar sedan data.
# Azure Blob Storage access info
blob_account_name = "azureopendatastorage"
blob_container_name = "nyctlc"
blob_relative_path = "yellow"
# blob_sas_token = "add your SAS token here"
# Construct the path for connection
wasbs_path = f'wasbs://{blob_container_name}@{blob_account_name}.blob.core.windows.net/{blob_relative_path}'
# WASBS path for connection including SAS token
# wasbs_path = f'wasbs://{blob_container_name}@{blob_account_name}.blob.core.windows.net/{blob_relative_path}?{blob_sas_token}'
# Read parquet data from Azure Blob Storage path
blob_df = spark.read.parquet(wasbs_path)
# Display the Azure Blob DataFrame
display(blob_df)
Kommentar
Det här exemplet visar hur du ansluter till data som lagras i Azure Open Datasets, som inte kräver en SAS-token. För att ansluta till dina egna data måste du generera en SAS-token och lägga till den i koden på lämpliga platser som anges i kommentarerna.
Konfigurera alternativ autentisering
Föregående exempel ansluter till källdata med en SAS-token innan du läser data i en DataFrame. Beroende på var dina data lagras kan du behöva använda en annan autentiseringstyp, till exempel Tjänstens huvudnamn eller OAuth. Här är ett exempel på hur du ansluter till en Azure SQL Database med tjänstens huvudnamn:
# Azure SQL Database connection info
server_name = "your_server_name.database.windows.net"
port_number = 1433 # Default port number for SQL Server
database_name = "your_database_name"
table_name = "YourTableName" # Database table
client_id = "YOUR_CLIENT_ID" # Service principal client ID
client_secret = "YOUR_CLIENT_SECRET" # Service principal client secret
# Build the Azure SQL Database JDBC URL with Service Principal
jdbc_url = f"jdbc:sqlserver://{server_name}:{port_number};database={database_name};encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30;Authentication=ActiveDirectoryServicePrincipal"
# Properties for the JDBC connection
properties = {
"user": client_id,
"password": client_secret
}
# Read table from Azure SQL Database using Entra ID Service Principal
sql_df = spark.read.jdbc(url=jdbc_url, table=table_name, properties=properties)
# Display the Azure SQL dataframe
display (sql_df)
Dricks
Mer information om hur du ansluter med Microsoft Entra-autentisering finns i Ansluta med Microsoft Entra-autentisering.
Skriva data till en lakehouse-fil
När du har anslutit till dina data och läst in dem i en dataram kan du spara dem i ett sjöhus. Följande kod sparar till exempel en dataram i Parquet-format , som stöder strukturerade, halvstrukturerade och ostrukturerade data. Parquet har en optimerad kolumnlagringsstruktur och effektiva komprimeringsfunktioner.
# Write dataframe to Parquet file format
parquet_output_path = "Files/your_folder/your_file_name"
df.write.mode("overwrite").parquet(parquet_output_path)
print(f"DataFrame has been written to Parquet file: {parquet_output_path}")
Kommentar
Infrastruktur lakehouses stöder även andra filformat, inklusive avgränsad text, JSON, Delta, Avro, ORC och andra.
Skriva till en Delta-tabell
Deltatabeller är en viktig funktion i Fabric Lakehouses eftersom de stöder ACID-transaktioner, en transaktionslogg med mera. Du kan mata in och läsa in dina externa data i en Delta-tabell via notebook-filer. Deltatabeller baseras på Parquet med tillägg av en loggfil. Lakehouse-tabeller sparas i Delta-format, enligt triangulär deltaikonen (Δ) bredvid tabellnamnet i användargränssnittet för infrastrukturresurser.
Följande kod sparar en Delta-tabell:
# Write dataframe to Delta table
delta_table_name = "your_delta_table_name"
df.write.format("delta").mode("overwrite").saveAsTable(delta_table_name)
# Confirm load as Delta table
print(f"DataFrame has been written to Delta table: {delta_table_name}")
Dricks
Läs mer om Delta-tabeller i Arbeta med Delta Lake-tabeller i Microsoft Fabric.
Optimera deltatabellskrivningar
Spark är ett ramverk för parallell bearbetning med data som lagras på en eller flera arbetsnoder, vilket innebär att det skalar bra för stora data. Men om det inte hanteras kan Spark lagra ett stort antal små datafiler, som kallas det lilla filproblemet, vilket kan försämra frågeprestandan. V-Order och Optimera skrivning är optimeringsalternativ som är aktiverade som standard i Infrastrukturresurser.
- Med V-Order kan du läsa snabbare och effektivare av olika beräkningsmotorer, till exempel Power BI, SQL och Spark. V-ordningen tillämpar särskild sortering, distribution, kodning och komprimering på parquet-filer vid skrivtid.
- Optimera skrivning förbättrar prestanda och tillförlitlighet genom att öka filstorlekarna och därmed minska antalet filer som skrivs. Det är användbart för scenarier där Delta-tabellerna har underoptimala eller icke-standardfilstorlekar, eller där den extra skrivfördröjningen kan tolereras.
Dricks
Läs mer om Delta Lake-tabelloptimering och V-Order.