Подключение к источникам данных и приему данных

Завершено

Записную книжку Fabric можно использовать для подключения к данным, которые хранятся в хранилище BLOB-объектов Azure, База данных SQL Azure и других вариантах хранения. Подключився к источнику данных, вы можете использовать данные в аналитических процессах даже через него не хранится в Lakehouse Fabric. Вы также можете использовать код Spark для фильтрации и обработки данных перед загрузкой в lakehouse, что позволяет использовать Spark в качестве мощного средства приема данных в среду аналитики Fabric.

Подключение к хранилищу BLOB-объектов Azure

Следующий код PySpark подключается к данным, удерживаемым в хранилище BLOB-объектов Azure, считывает данные в кадр данных, а затем отображает данные.

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

Примечание.

В этом примере показано, как подключиться к данным, которые хранятся в открытых наборах данных Azure, которые не требуют маркера SAS. Чтобы подключиться к собственным данным, необходимо создать маркер SAS и добавить его в код в соответствующих местах, указанных в комментариях.

Настройка альтернативной проверки подлинности

Предыдущий пример подключается к исходным данным с маркером SAS перед чтением данных в кадр данных. В зависимости от того, где хранятся данные, может потребоваться использовать другой тип проверки подлинности, например субъект-служба или OAuth. Ниже приведен пример подключения к База данных SQL Azure с субъектом-службой:

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

Совет

Дополнительные сведения о подключении с помощью проверки подлинности Microsoft Entra см. в статье "Подключение с помощью проверки подлинности Microsoft Entra".

Запись данных в файл Lakehouse

После подключения к данным и загрузки его в кадр данных можно сохранить в озерном доме. Например, следующий код сохраняет кадр данных в формате Parquet , который поддерживает структурированные, полуструктурированные и неструктурированные данные. Parquet имеет оптимизированную структуру хранилища столбцов и эффективные возможности сжатия.

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

Примечание.

Fabric lakehouses также поддерживает другие форматы файлов, включая разделенный текст, JSON, Delta, Avro, ORC и другие.

Запись в разностную таблицу

Разностные таблицы являются ключевым компонентом Fabric lakehouses, так как они поддерживают транзакции ACID, журнал транзакций и многое другое. Вы можете получать и загружать внешние данные в таблицу Delta с помощью записных книжек. Разностные таблицы основаны на Parquet с добавлением файла журнала. Таблицы Lakehouse сохраняются в разностном формате, как указано на значке триангулярной разностной дельты (FX) рядом с именем таблицы в пользовательском интерфейсе Fabric.

Следующий код сохраняет таблицу 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}")

Совет

Дополнительные сведения о таблицах Delta см. в разделе "Работа с таблицами Delta Lake" в Microsoft Fabric.

Оптимизация операций записи в разностной таблице

Spark — это платформа параллельной обработки с данными, хранящимися на одном или нескольких рабочих узлах, что означает, что оно хорошо масштабируется для больших данных. Однако, если управление не удается, Spark может хранить большое количество небольших файлов данных, известное как проблема с небольшими файлами, что может снизить производительность запросов. V-Order и Optimize write — это параметры оптимизации, включенные по умолчанию в Fabric.

  • V-Order позволяет быстрее и эффективнее считывать различные вычислительные подсистемы, такие как Power BI, SQL и Spark. В порядке V применяется специальная сортировка, распределение, кодировка и сжатие файлов parquet во время записи.
  • Оптимизируйте запись , повышая производительность и надежность, увеличив размер файлов и уменьшая количество записанных файлов. Это полезно для сценариев, когда таблицы Delta имеют неоптимальные или нестандартные размеры файлов или где дополнительная задержка записи допускается.

Совет

Дополнительные сведения об оптимизации таблиц Delta Lake и V-Order.