Veri kaynaklarına bağlanma ve verileri alma
Doku not defterini kullanarak Azure blob depolamada tutulan verilere, Azure SQL Veritabanı ve diğer depolama seçeneklerine bağlanabilirsiniz. Bir veri kaynağına bağlanarak, bir Fabric lakehouse'da depolanmasa bile analiz işlemlerinde verileri kullanabilirsiniz. Spark kodunu kullanarak verileri lakehouse'a yüklemeden önce filtreleyebilir ve işleyebilir, böylece Spark'ı Doku analizi ortamınıza veri alımı için güçlü bir araç olarak kullanabilirsiniz.
Azure blob depolamaya bağlanma
Aşağıdaki PySpark kodu Azure blob depolamada tutulan verilere bağlanır, verileri bir DataFrame'e okur ve ardından verileri görüntüler.
# 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)
Not
Bu örnekte, SAS belirteci gerektirmeyen Azure Açık Veri Kümelerinde tutulan verilere nasıl bağlanıldığı gösterilmektedir. Kendi verilerinize bağlanmak için bir SAS belirteci oluşturmanız ve bunu açıklamalarda belirtilen uygun yerlerdeki koda eklemeniz gerekir.
Alternatif kimlik doğrulamayı yapılandırma
Önceki örnek, verileri bir DataFrame'e okumadan önce sas belirteci ile kaynak verilere bağlanır. Verilerinizin depolandığı yere bağlı olarak, Hizmet Sorumlusu veya OAuth gibi farklı bir kimlik doğrulama türü kullanmanız gerekebilir. Hizmet Sorumlusu ile bir Azure SQL Veritabanı bağlanma örneği aşağıda verilmişti:
# 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)
İpucu
Microsoft Entra kimlik doğrulamasını kullanarak bağlanma hakkında daha fazla bilgi için bkz . Microsoft Entra kimlik doğrulamasını kullanarak bağlanma.
Lakehouse dosyasına veri yazma
Verilerinize bağlandıktan ve bir veri çerçevesine yükledikten sonra bir göle kaydedebilirsiniz. Örneğin, aşağıdaki kod bir veri çerçevesini yapılandırılmış, yarı yapılandırılmış ve yapılandırılmamış verileri destekleyen Parquet biçiminde kaydeder. Parquet iyileştirilmiş sütunlu depolama yapısına ve verimli sıkıştırma özelliklerine sahiptir.
# 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}")
Not
Fabric lakehouses; sınırlandırılmış metin, JSON, Delta, Avro, ORC ve diğerleri gibi diğer dosya biçimlerini de destekler.
Delta tablosuna yazma
Delta tabloları ACID işlemlerini, işlem günlüğünü ve daha fazlasını desteklediğinden Fabric lakehouse'ların önemli bir özelliğidir. Dış verilerinizi not defterleri aracılığıyla bir Delta tablosuna alabilir ve yükleyebilirsiniz. Delta tabloları, bir günlük dosyasının eklenmesiyle Parquet'i temel alır. Lakehouse tabloları, Doku kullanıcı arabirimindeki tablo adının yanındaki üçgen Delta (Δ) simgesiyle gösterildiği gibi Delta biçiminde kaydedilir.
Aşağıdaki kod bir Delta tablosunu kaydeder:
# 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}")
İpucu
Microsoft Fabric'te Delta Lake tablolarıyla çalışma makalesinde Delta tabloları hakkında daha fazla bilgi edinin.
Delta tablosu yazmalarını iyileştirme
Spark, verilerin bir veya daha fazla çalışan düğümünde depolandığı bir paralel işleme çerçevesidir ve bu da büyük veriler için iyi ölçeklendirildiği anlamına gelir. Ancak yönetilmediği sürece Spark, küçük dosya sorunu olarak bilinen çok sayıda küçük veri dosyasını depolayabilir ve bu da sorgu performansını düşürebilir. V-Order ve Optimize write , Doku'da varsayılan olarak etkinleştirilen iyileştirme seçenekleridir.
- V-Order , Power BI, SQL ve Spark gibi çeşitli işlem altyapıları tarafından daha hızlı ve daha verimli okumalar sağlar. V düzeni, yazma zamanında parquet dosyalarına özel sıralama, dağıtım, kodlama ve sıkıştırma uygular.
- Yazmayı iyileştirme, dosya boyutlarını artırarak ve böylece yazılan dosya sayısını azaltarak performansı ve güvenilirliği artırır. Delta tablolarının yetersiz veya standart olmayan dosya boyutlarına sahip olduğu veya ek yazma gecikmesinin tolere edilebilir olduğu senaryolar için kullanışlıdır.
İpucu
Delta Lake tablo iyileştirmesi ve V-Order hakkında daha fazla bilgi edinin.