Conexión a orígenes de datos e ingesta de datos

Completado

Puede usar un cuaderno de Fabric para conectarse a los datos almacenados en Azure Blob Storage, una instancia de Azure SQL Database y otras opciones de almacenamiento. Al conectarse a un origen de datos, puede usar los datos en procesos analíticos aunque no estén almacenados en un almacén de lago de Fabric. También puede usar código de Spark para filtrar y procesar los datos antes de cargarlos en el almacén de lago de datos, lo que le permite usar Spark como una potente herramienta para la ingesta de datos en su entorno analítico de Fabric.

Conexión con el almacenamiento de blobs de Azure

El siguiente código de PySpark se conecta a los datos almacenados en Azure blob storage, lee los datos en un DataFrame y después muestra los datos.

# 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)

Nota:

Este ejemplo muestra cómo conectarse a los datos almacenados en Azure Open Datasets, que no requieren un token de SAS. Para conectarse a sus propios datos, tendrá que generar un token de SAS y agregarlo al código en los lugares apropiados indicados en los comentarios.

Configuración de la autenticación alternativa

El ejemplo anterior se conecta a los datos de origen con un token de SAS, antes de leer los datos en un DataFrame. Dependiendo de dónde se almacenen sus datos, puede que necesite usar un tipo de autenticación diferente, como Entidad de servicio u OAuth. Este es un ejemplo de conexión a Azure SQL Database con una entidad de servicio:

# 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)

Sugerencia

Para más información sobre cómo conectarse usando la autenticación de Microsoft Entra, consulte Conectarse usando la autenticación de Microsoft Entra.

Escribir datos en un archivo de Lakehouse

Tras conectarse a sus datos y cargarlos en un dataframe, puede guardarlos en un lago de datos. Por ejemplo, el siguiente código guarda un dataframe en formato Parquet, que es compatible con datos estructurados, semiestructurados y no estructurados. Parquet tiene una estructura de almacenamiento en columnas optimizada y una capacidad de compresión eficaz.

# 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}")

Nota:

Los lagos de datos de Fabric también son compatibles con otros formatos de archivo, como texto delimitado, JSON, Delta, Avro, ORC y otros.

Escritura en una tabla Delta

Las tablas delta son una característica clave de los lagos de datos de Fabric porque son compatibles con las transacciones ACID, un registro de transacciones y mucho más. Puede ingerir y cargar sus datos externos en una tabla Delta a través de cuadernos. Las tablas Delta se basan en Parquet con la adición de un archivo de registro. Las tablas de almacén de lago de datos se guardan en formato Delta, como indica el icono triangular Delta (Δ) junto al nombre de la tabla en la interfaz de usuario de Fabric.

El código siguiente guarda una tabla Delta:

# 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}")

Sugerencia

Obtenga más información sobre las tablas Delta en Trabajo con tablas Delta Lake en Microsoft Fabric.

Optimización de escrituras de tabla Delta

Spark es un marco de procesamiento paralelo, con datos almacenados en uno o más nodos de trabajo, lo que significa que escala bien para datos de gran tamaño. Sin embargo, si no se administra, Spark puede almacenar un gran número de archivos de datos pequeños, lo que se conoce como el problema de los archivos pequeños, que puede degradar el rendimiento de las consultas. Orden V y Optimizar escritura son opciones de optimización habilitadas de manera predeterminada en Fabric.

  • Orden V posibilita lecturas más rápidas y eficientes por parte de diversos motores de proceso, como Power BI, SQL y Spark. El orden V aplica una ordenación, distribución, codificación y compresión especiales a los archivos de parquet en tiempo de escritura.
  • Optimizar escritura mejora el rendimiento y la fiabilidad aumentando el tamaño de los archivos y reduciendo así el número de archivos escritos. Resulta útil para escenarios en los que las tablas Delta tienen tamaños de archivo poco óptimos o no estándar, o donde se tolera la latencia de escritura adicional.

Sugerencia

Obtenga más información sobre laoptimización de tablas de Delta Lake y V-Order .