Tutoriel : Extraire, transformer et charger des données à l’aide d’Azure DatabricksTutorial: Extract, transform, and load data by using Azure Databricks

Dans ce tutoriel, vous allez effectuer une opération ETL (extraction, transformation et chargement de données) à l’aide d’Azure Databricks.In this tutorial, you perform an ETL (extract, transform, and load data) operation by using Azure Databricks. Vous extrayez des données d’Azure Data Lake Storage Gen2 dans Azure Databricks, exécutez des transformations sur les données dans Azure Databricks, puis chargez les données transformées dans Azure SQL Data Warehouse.You extract data from Azure Data Lake Storage Gen2 into Azure Databricks, run transformations on the data in Azure Databricks, and load the transformed data into Azure SQL Data Warehouse.

Les étapes décrites dans ce didacticiel utilisent le connecteur SQL Data Warehouse pour Azure Databricks, afin de transférer des données à Azure Databricks.The steps in this tutorial use the SQL Data Warehouse connector for Azure Databricks to transfer data to Azure Databricks. Ce connecteur utilise ensuite le Stockage Blob Azure en tant que stockage temporaire pour les données transférées entre un cluster Azure Databricks et Azure SQL Data Warehouse.This connector, in turn, uses Azure Blob Storage as temporary storage for the data being transferred between an Azure Databricks cluster and Azure SQL Data Warehouse.

L’illustration suivante montre le flux d’application :The following illustration shows the application flow:

Azure Databricks avec Data Lake Store et SQL Data WarehouseAzure Databricks with Data Lake Store and SQL Data Warehouse

Ce tutoriel décrit les tâches suivantes :This tutorial covers the following tasks:

  • Créez un service Azure Databricks.Create an Azure Databricks service.
  • Créer un cluster Spark dans Azure Databricks.Create a Spark cluster in Azure Databricks.
  • Créer un système de fichiers dans le compte Data Lake Storage Gen2.Create a file system in the Data Lake Storage Gen2 account.
  • Chargez des exemples de données dans le compte Azure Data Lake Storage Gen2.Upload sample data to the Azure Data Lake Storage Gen2 account.
  • Créer un principal de service.Create a service principal.
  • Extraire les données du compte Azure Data Lake Storage Gen2.Extract data from the Azure Data Lake Storage Gen2 account.
  • Transformer des données dans Azure Databricks.Transform data in Azure Databricks.
  • Charger des données dans Azure SQL Data Warehouse.Load data into Azure SQL Data Warehouse.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don’t have an Azure subscription, create a free account before you begin.

Notes

Ce didacticiel ne peut pas être suivi avec un abonnement d’essai gratuit Azure.This tutorial cannot be carried out using Azure Free Trial Subscription. Si vous avez un compte gratuit, accédez à votre profil et modifiez votre abonnement sur Paiement à l’utilisation.If you have a free account, go to your profile and change your subscription to pay-as-you-go. Pour plus d’informations, consultez la page Compte Azure gratuit.For more information, see Azure free account. Ensuite, supprimez la limite de dépense, et demandez une augmentation du quota pour les processeurs virtuels dans votre région.Then, remove the spending limit, and request a quota increase for vCPUs in your region. Lorsque vous créez votre espace de travail Azure Databricks, vous pouvez sélectionner le tarif Version d’évaluation (Premium - 14 jours de DBU offerts) pour donner à l’accès de l’espace de travail un accès gratuit aux DBU d’Azure Databricks pendant 14 jours.When you create your Azure Databricks workspace, you can select the Trial (Premium - 14-Days Free DBUs) pricing tier to give the workspace access to free Premium Azure Databricks DBUs for 14 days.

Conditions préalables requisesPrerequisites

Avant de commencer ce tutoriel, effectuez les tâches suivantes :Complete these tasks before you begin this tutorial:

Collecter les informations dont vous avez besoinGather the information that you need

Vérifiez que vous remplissez les prérequis de ce tutoriel.Make sure that you complete the prerequisites of this tutorial.

Avant de commencer, vous devez disposer des informations suivantes :Before you begin, you should have these items of information:

✔️ Nom de la base de données, nom du serveur de base de données, nom d’utilisateur et mot de passe de votre entrepôt de données SQL Azure.The database name, database server name, user name, and password of your Azure SQL Data warehouse.

✔️ Clé d’accès associée à votre compte de stockage d’objets blob.The access key of your blob storage account.

✔️ Nom de votre compte de stockage Data Lake Storage Gen2.The name of your Data Lake Storage Gen2 storage account.

✔️ ID de locataire de votre abonnement.The tenant ID of your subscription.

✔️ ID de l’application que vous avez inscrite auprès d’Azure Active Directory (Azure AD).The application ID of the app that you registered with Azure Active Directory (Azure AD).

✔️ Clé d’authentification pour l’application que vous avez inscrite auprès d’Azure AD.The authentication key for the app that you registered with Azure AD.

Créer un service Azure DatabricksCreate an Azure Databricks service

Dans cette section, vous créez un service Azure Databricks en utilisant le portail Azure.In this section, you create an Azure Databricks service by using the Azure portal.

  1. Dans le menu du Portail Azure, sélectionnez Créer une ressource.From the Azure portal menu, select Create a resource.

    Créer une ressource sur le portail Azure

    Sélectionnez ensuite Analytics > Azure Databricks.Then, select Analytics > Azure Databricks.

    Créer Azure Databricks sur le portail Azure

  2. Sous Service Azure Databricks, renseignez les valeurs suivantes pour créer un service Databricks :Under Azure Databricks Service, provide the following values to create a Databricks service:

    PropriétéProperty DescriptionDescription
    Nom de l’espace de travailWorkspace name Fournissez un nom pour votre espace de travail Databricks.Provide a name for your Databricks workspace.
    AbonnementSubscription Sélectionnez votre abonnement Azure dans la liste déroulante.From the drop-down, select your Azure subscription.
    Groupe de ressourcesResource group Indiquez si vous souhaitez créer un groupe de ressources Azure ou utiliser un groupe existant.Specify whether you want to create a new resource group or use an existing one. Un groupe de ressources est un conteneur réunissant les ressources associées d’une solution Azure.A resource group is a container that holds related resources for an Azure solution. Pour plus d’informations, consultez Présentation des groupes de ressources Azure.For more information, see Azure Resource Group overview.
    LieuLocation Sélectionnez USA Ouest 2.Select West US 2. Pour les autres régions disponibles, consultez Disponibilité des services Azure par région.For other available regions, see Azure services available by region.
    Niveau tarifairePricing Tier Sélectionnez Standard.Select Standard.
  3. La création du compte prend quelques minutes.The account creation takes a few minutes. Pour superviser l’état de l’opération, regardez la barre de progression située en haut.To monitor the operation status, view the progress bar at the top.

  4. Sélectionnez Épingler au tableau de bord, puis sélectionnez Créer.Select Pin to dashboard and then select Create.

Créer un cluster Spark dans Azure DatabricksCreate a Spark cluster in Azure Databricks

  1. Dans le portail Azure, accédez au service Databricks que vous avez créé, puis sélectionnez Initialiser l’espace de travail.In the Azure portal, go to the Databricks service that you created, and select Launch Workspace.

  2. Vous êtes redirigé vers le portail Azure Databricks.You're redirected to the Azure Databricks portal. Dans le portail, sélectionnez Cluster.From the portal, select Cluster.

    Databricks sur AzureDatabricks on Azure

  3. Dans la page Nouveau cluster, renseignez les valeurs pour créer un cluster.In the New cluster page, provide the values to create a cluster.

    Créer un cluster Databricks Spark sur AzureCreate Databricks Spark cluster on Azure

  4. Renseignez les champs suivants et acceptez les valeurs par défaut pour les autres champs :Fill in values for the following fields, and accept the default values for the other fields:

    • Entrez un nom pour le cluster.Enter a name for the cluster.

    • Veillez à cocher la case Arrêter après __ minutes d’inactivité.Make sure you select the Terminate after __ minutes of inactivity check box. Si le cluster n’est pas utilisé, indiquez une durée (en minutes) pour arrêter le cluster.If the cluster isn't being used, provide a duration (in minutes) to terminate the cluster.

    • Sélectionnez Créer un cluster.Select Create cluster. Une fois que le cluster est en cours d’exécution, vous pouvez y attacher des notebooks et exécuter des travaux Spark.After the cluster is running, you can attach notebooks to the cluster and run Spark jobs.

Créer un système de fichiers dans le compte Azure Data Lake Storage Gen2Create a file system in the Azure Data Lake Storage Gen2 account

Dans cette section, vous créez un bloc-notes dans l’espace de travail Azure Databricks, puis vous exécutez des extraits de code pour configurer le compte de stockageIn this section, you create a notebook in Azure Databricks workspace and then run code snippets to configure the storage account

  1. Dans le portail Azure, accédez au service Azure Databricks que vous avez créé, puis sélectionnez Initialiser l’espace de travail.In the Azure portal, go to the Azure Databricks service that you created, and select Launch Workspace.

  2. À gauche, sélectionnez Espace de travail.On the left, select Workspace. Dans la liste déroulante Espace de travail, sélectionnez Créer > Notebook.From the Workspace drop-down, select Create > Notebook.

    Créer un notebook dans DatabricksCreate a notebook in Databricks

  3. Dans la boîte de dialogue Créer un bloc-notes, entrez un nom pour le bloc-notes.In the Create Notebook dialog box, enter a name for the notebook. Sélectionnez Scala comme langage, puis sélectionnez le cluster Spark que vous avez créé précédemment.Select Scala as the language, and then select the Spark cluster that you created earlier.

    Fournir des détails pour un notebook dans DatabricksProvide details for a notebook in Databricks

  4. Sélectionnez Create (Créer).Select Create.

  5. Le bloc de code suivant définit les informations d’identification par défaut du principal de service pour tout compte ADLS Gen 2 sollicité dans la session Spark.The following code block sets default service principal credentials for any ADLS Gen 2 account accessed in the Spark session. Le deuxième bloc de code ajoute le nom du compte au paramètre afin de spécifier les informations d’identification pour un compte ADLS Gen 2 spécifique.The second code block appends the account name to the setting to specify credentials for a specific ADLS Gen 2 account. Copiez et collez l’un ou l’autre bloc de code dans la première cellule de votre bloc-notes Azure Databricks.Copy and paste either code block into the first cell of your Azure Databricks notebook.

    Configuration de sessionSession configuration

    val appID = "<appID>"
    val password = "<password>"
    val tenantID = "<tenant-id>"
    
    spark.conf.set("fs.azure.account.auth.type", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id", "<appID>")
    spark.conf.set("fs.azure.account.oauth2.client.secret", "<password>")
    spark.conf.set("fs.azure.account.oauth2.client.endpoint", "https://login.microsoftonline.com/<tenant-id>/oauth2/token")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
    

    Configuration du compteAccount configuration

    val storageAccountName = "<storage-account-name>"
    val appID = "<app-id>"
    val secret = "<secret>"
    val fileSystemName = "<file-system-name>"
    val tenantID = "<tenant-id>"
    
    spark.conf.set("fs.azure.account.auth.type." + storageAccountName + ".dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type." + storageAccountName + ".dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id." + storageAccountName + ".dfs.core.windows.net", "" + appID + "")
    spark.conf.set("fs.azure.account.oauth2.client.secret." + storageAccountName + ".dfs.core.windows.net", "" + secret + "")
    spark.conf.set("fs.azure.account.oauth2.client.endpoint." + storageAccountName + ".dfs.core.windows.net", "https://login.microsoftonline.com/" + tenantID + "/oauth2/token")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "true")
    dbutils.fs.ls("abfss://" + fileSystemName  + "@" + storageAccountName + ".dfs.core.windows.net/")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "false")
    
  6. Dans ce bloc de code, remplacez les valeurs d’espace réservé <app-id>, <secret>, <tenant-id> et <storage-account-name> par celles que vous avez collectées au moment de la finalisation des prérequis de ce tutoriel.In this code block, replace the <app-id>, <secret>, <tenant-id>, and <storage-account-name> placeholder values in this code block with the values that you collected while completing the prerequisites of this tutorial. Remplacez la valeur d’espace réservé <file-system-name> par le nom de système de fichiers de votre choix.Replace the <file-system-name> placeholder value with whatever name you want to give the file system.

    • <app-id> et <secret> proviennent de l’application que vous avez inscrite auprès d’Active Directory dans le cadre de la création d’un principal de service.The <app-id>, and <secret> are from the app that you registered with active directory as part of creating a service principal.

    • <tenant-id> provient de votre abonnement.The <tenant-id> is from your subscription.

    • <storage-account-name> est le nom de votre compte de stockage Azure Data Lake Storage Gen2.The <storage-account-name> is the name of your Azure Data Lake Storage Gen2 storage account.

  7. Appuyez sur les touches Maj +Entrée pour exécuter le code de ce bloc.Press the SHIFT + ENTER keys to run the code in this block.

Ingérer des exemples de données dans le compte Azure Data Lake Storage Gen2Ingest sample data into the Azure Data Lake Storage Gen2 account

Avant de commencer cette section, vous devez effectuer les prérequis suivants :Before you begin with this section, you must complete the following prerequisites:

Entrez le code suivant dans une cellule du bloc-notes :Enter the following code into a notebook cell:

%sh wget -P /tmp https://raw.githubusercontent.com/Azure/usql/master/Examples/Samples/Data/json/radiowebsite/small_radio_json.json

Dans la cellule, appuyez sur Maj+Entrée pour exécuter le code.In the cell, press SHIFT + ENTER to run the code.

À présent, dans une nouvelle cellule en dessous de celle-ci, entrez le code suivant et remplacez les valeurs entre crochets par les valeurs que vous avez utilisées plus tôt :Now in a new cell below this one, enter the following code, and replace the values that appear in brackets with the same values you used earlier:

dbutils.fs.cp("file:///tmp/small_radio_json.json", "abfss://" + fileSystemName + "@" + storageAccountName + ".dfs.core.windows.net/")

Dans la cellule, appuyez sur Maj+Entrée pour exécuter le code.In the cell, press SHIFT + ENTER to run the code.

Extraire les données du compte Azure Data Lake Storage Gen2Extract data from the Azure Data Lake Storage Gen2 account

  1. Vous pouvez maintenant charger l’exemple de fichier JSON en tant que trame de données dans Azure Databricks.You can now load the sample json file as a data frame in Azure Databricks. Collez le code suivant dans une nouvelle cellule.Paste the following code in a new cell. Remplacez les espaces réservés indiqués entre crochets par vos valeurs.Replace the placeholders shown in brackets with your values.

    val df = spark.read.json("abfss://" + fileSystemName + "@" + storageAccountName + ".dfs.core.windows.net/small_radio_json.json")
    
  2. Appuyez sur les touches Maj +Entrée pour exécuter le code de ce bloc.Press the SHIFT + ENTER keys to run the code in this block.

  3. Exécutez le code suivant pour voir le contenu du dataframe :Run the following code to see the contents of the data frame:

    df.show()
    

    Le résultat ressemble à ce qui suit :You see an output similar to the following snippet:

    +---------------------+---------+---------+------+-------------+----------+---------+-------+--------------------+------+--------+-------------+---------+--------------------+------+-------------+------+
    |               artist|     auth|firstName|gender|itemInSession|  lastName|   length|  level|            location|method|    page| registration|sessionId|                song|status|           ts|userId|
    +---------------------+---------+---------+------+-------------+----------+---------+-------+--------------------+------+--------+-------------+---------+--------------------+------+-------------+------+
    | El Arrebato         |Logged In| Annalyse|     F|            2|Montgomery|234.57914| free  |  Killeen-Temple, TX|   PUT|NextSong|1384448062332|     1879|Quiero Quererte Q...|   200|1409318650332|   309|
    | Creedence Clearwa...|Logged In|   Dylann|     M|            9|    Thomas|340.87138| paid  |       Anchorage, AK|   PUT|NextSong|1400723739332|       10|        Born To Move|   200|1409318653332|    11|
    | Gorillaz            |Logged In|     Liam|     M|           11|     Watts|246.17751| paid  |New York-Newark-J...|   PUT|NextSong|1406279422332|     2047|                DARE|   200|1409318685332|   201|
    ...
    ...
    

    Vous avez extrait les données d’Azure Data Lake Storage Gen2 dans Azure Databricks.You have now extracted the data from Azure Data Lake Storage Gen2 into Azure Databricks.

Transformer des données dans Azure DatabricksTransform data in Azure Databricks

Le fichier brut de l’exemple de données small_radio_json.json capture l’audience d’une station de radio et présente différentes colonnes.The raw sample data small_radio_json.json file captures the audience for a radio station and has a variety of columns. Dans cette section, vous transformez les données pour récupérer uniquement des colonnes spécifiques du jeu de données.In this section, you transform the data to only retrieve specific columns from the dataset.

  1. Tout d’abord, récupérez uniquement les colonnes firstName, lastName, gender, location et level du dataframe que vous avez créé.First, retrieve only the columns firstName, lastName, gender, location, and level from the dataframe that you created.

    val specificColumnsDf = df.select("firstname", "lastname", "gender", "location", "level")
    specificColumnsDf.show()
    

    Vous recevez une sortie similaire à l’extrait de code suivant :You receive output as shown in the following snippet:

    +---------+----------+------+--------------------+-----+
    |firstname|  lastname|gender|            location|level|
    +---------+----------+------+--------------------+-----+
    | Annalyse|Montgomery|     F|  Killeen-Temple, TX| free|
    |   Dylann|    Thomas|     M|       Anchorage, AK| paid|
    |     Liam|     Watts|     M|New York-Newark-J...| paid|
    |     Tess|  Townsend|     F|Nashville-Davidso...| free|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...| free|
    |     Alan|     Morse|     M|Chicago-Napervill...| paid|
    |Gabriella|   Shelton|     F|San Jose-Sunnyval...| free|
    |   Elijah|  Williams|     M|Detroit-Warren-De...| paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...| free|
    |     Tess|  Townsend|     F|Nashville-Davidso...| free|
    |     Alan|     Morse|     M|Chicago-Napervill...| paid|
    |     Liam|     Watts|     M|New York-Newark-J...| paid|
    |     Liam|     Watts|     M|New York-Newark-J...| paid|
    |   Dylann|    Thomas|     M|       Anchorage, AK| paid|
    |     Alan|     Morse|     M|Chicago-Napervill...| paid|
    |   Elijah|  Williams|     M|Detroit-Warren-De...| paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...| free|
    |     Alan|     Morse|     M|Chicago-Napervill...| paid|
    |   Dylann|    Thomas|     M|       Anchorage, AK| paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...| free|
    +---------+----------+------+--------------------+-----+
    
  2. Vous pouvez transformer ces données pour renommer la colonne level en subscription_type.You can further transform this data to rename the column level to subscription_type.

    val renamedColumnsDF = specificColumnsDf.withColumnRenamed("level", "subscription_type")
    renamedColumnsDF.show()
    

    Vous recevez une sortie similaire à l’extrait de code suivant.You receive output as shown in the following snippet.

    +---------+----------+------+--------------------+-----------------+
    |firstname|  lastname|gender|            location|subscription_type|
    +---------+----------+------+--------------------+-----------------+
    | Annalyse|Montgomery|     F|  Killeen-Temple, TX|             free|
    |   Dylann|    Thomas|     M|       Anchorage, AK|             paid|
    |     Liam|     Watts|     M|New York-Newark-J...|             paid|
    |     Tess|  Townsend|     F|Nashville-Davidso...|             free|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...|             free|
    |     Alan|     Morse|     M|Chicago-Napervill...|             paid|
    |Gabriella|   Shelton|     F|San Jose-Sunnyval...|             free|
    |   Elijah|  Williams|     M|Detroit-Warren-De...|             paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...|             free|
    |     Tess|  Townsend|     F|Nashville-Davidso...|             free|
    |     Alan|     Morse|     M|Chicago-Napervill...|             paid|
    |     Liam|     Watts|     M|New York-Newark-J...|             paid|
    |     Liam|     Watts|     M|New York-Newark-J...|             paid|
    |   Dylann|    Thomas|     M|       Anchorage, AK|             paid|
    |     Alan|     Morse|     M|Chicago-Napervill...|             paid|
    |   Elijah|  Williams|     M|Detroit-Warren-De...|             paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...|             free|
    |     Alan|     Morse|     M|Chicago-Napervill...|             paid|
    |   Dylann|    Thomas|     M|       Anchorage, AK|             paid|
    |  Margaux|     Smith|     F|Atlanta-Sandy Spr...|             free|
    +---------+----------+------+--------------------+-----------------+
    

Chargement de données dans Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

Dans cette section, vous chargez les données transformées dans Azure SQL Data Warehouse.In this section, you upload the transformed data into Azure SQL Data Warehouse. Vous utilisez le connecteur Azure SQL Data Warehouse pour Azure Databricks pour charger directement un dataframe sous forme de table dans un entrepôt de données SQL.You use the Azure SQL Data Warehouse connector for Azure Databricks to directly upload a dataframe as a table in a SQL data warehouse.

Comme mentionné précédemment, le connecteur SQL Data Warehouse utilise le Stockage Blob Azure comme stockage temporaire pour charger des données entre Azure Databricks et Azure SQL Data Warehouse.As mentioned earlier, the SQL Data Warehouse connector uses Azure Blob storage as temporary storage to upload data between Azure Databricks and Azure SQL Data Warehouse. Vous commencez donc par fournir la configuration pour vous connecter au compte de stockage.So, you start by providing the configuration to connect to the storage account. Vous devez déjà avoir créé le compte pour les prérequis de cet article.You must already have already created the account as part of the prerequisites for this article.

  1. Fournissez la configuration pour accéder au compte de Stockage Azure à partir d’Azure Databricks.Provide the configuration to access the Azure Storage account from Azure Databricks.

    val blobStorage = "<blob-storage-account-name>.blob.core.windows.net"
    val blobContainer = "<blob-container-name>"
    val blobAccessKey =  "<access-key>"
    
  2. Spécifiez un dossier temporaire à utiliser lors du déplacement des données entre Azure Databricks et Azure SQL Data Warehouse.Specify a temporary folder to use while moving data between Azure Databricks and Azure SQL Data Warehouse.

    val tempDir = "wasbs://" + blobContainer + "@" + blobStorage +"/tempDirs"
    
  3. Exécutez l’extrait de code suivant pour stocker les clés d’accès du Stockage Blob Azure dans la configuration.Run the following snippet to store Azure Blob storage access keys in the configuration. Cette action vous dispense d’avoir à conserver la clé d’accès dans le notebook en texte brut.This action ensures that you don't have to keep the access key in the notebook in plain text.

    val acntInfo = "fs.azure.account.key."+ blobStorage
    sc.hadoopConfiguration.set(acntInfo, blobAccessKey)
    
  4. Indiquez les valeurs pour vous connecter à l’instance Azure SQL Data Warehouse.Provide the values to connect to the Azure SQL Data Warehouse instance. Vous devez avoir créé un entrepôt de données SQL dans le cadre des prérequis.You must have created a SQL data warehouse as a prerequisite. Utilisez le nom complet du serveur pour dwServer.Use the fully qualified server name for dwServer. Par exemple : <servername>.database.windows.net.For example, <servername>.database.windows.net.

    //SQL Data Warehouse related settings
    val dwDatabase = "<database-name>"
    val dwServer = "<database-server-name>"
    val dwUser = "<user-name>"
    val dwPass = "<password>"
    val dwJdbcPort =  "1433"
    val dwJdbcExtraOptions = "encrypt=true;trustServerCertificate=true;hostNameInCertificate=*.database.windows.net;loginTimeout=30;"
    val sqlDwUrl = "jdbc:sqlserver://" + dwServer + ":" + dwJdbcPort + ";database=" + dwDatabase + ";user=" + dwUser+";password=" + dwPass + ";$dwJdbcExtraOptions"
    val sqlDwUrlSmall = "jdbc:sqlserver://" + dwServer + ":" + dwJdbcPort + ";database=" + dwDatabase + ";user=" + dwUser+";password=" + dwPass
    
  5. Exécutez l’extrait de code suivant pour charger le dataframe transformé, renamedColumnsDF, en tant que table dans un entrepôt de données SQL. Cet extrait de code crée une table appelée SampleTable dans la base de données SQL.This snippet creates a table called SampleTable in the SQL database.

    spark.conf.set(
        "spark.sql.parquet.writeLegacyFormat",
        "true")
    
    renamedColumnsDF.write.format("com.databricks.spark.sqldw").option("url", sqlDwUrlSmall).option("dbtable", "SampleTable")       .option( "forward_spark_azure_storage_credentials","True").option("tempdir", tempDir).mode("overwrite").save()
    

    Notes

    Cet exemple utilise l’indicateur forward_spark_azure_storage_credentials, qui fait en sorte que l’entrepôt de données SQL accède aux données à partir du stockage d’objets blob à l’aide d’une clé d’accès.This sample uses the forward_spark_azure_storage_credentials flag, which causes SQL Data Warehouse to access data from blob storage using an Access Key. Il s’agit de la seule méthode d’authentification prise en charge.This is the only supported method of authentication.

    Si votre Stockage Blob Azure est limité à certains réseaux virtuels, SQL Data Warehouse nécessite Managed Service Identity au lieu de clés d’accès.If your Azure Blob Storage is restricted to select virtual networks, SQL Data Warehouse requires Managed Service Identity instead of Access Keys. Cela génère l’erreur « Cette requête n’est pas autorisée à effectuer cette opération ».This will cause the error "This request is not authorized to perform this operation."

  6. Connectez-vous à la base de données SQL et vérifiez que vous y voyez une base de données nommée SampleTable.Connect to the SQL database and verify that you see a database named SampleTable.

    Vérifier l’exemple de tableVerify the sample table

  7. Exécutez une requête SELECT pour vérifier le contenu de la table.Run a select query to verify the contents of the table. Celle-ci doit avoir les mêmes données que celles présentes dans le dataframe renamedColumnsDf.The table should have the same data as the renamedColumnsDF dataframe.

    Vérifier le contenu de l’exemple de tableVerify the sample table content

Nettoyer les ressourcesClean up resources

Une fois que vous avez terminé le tutoriel, vous pouvez terminer le cluster.After you finish the tutorial, you can terminate the cluster. Dans l’espace de travail Azure Databricks, sélectionnez Clusters à gauche.From the Azure Databricks workspace, select Clusters on the left. Pour terminer le cluster, sous Actions, pointez sur les points de suspension (...) et sélectionnez l’icône Terminer.For the cluster to terminate, under Actions, point to the ellipsis (...) and select the Terminate icon.

Arrêter un cluster DatabricksStop a Databricks cluster

Si vous ne terminez pas le cluster manuellement, il s’arrête automatiquement, à condition d’avoir coché la case Arrêter après __ minutes d’inactivité lors de la création du cluster.If you don't manually terminate the cluster, it automatically stops, provided you selected the Terminate after __ minutes of inactivity check box when you created the cluster. Dans ce cas, le cluster s’arrête automatiquement s’il a été inactif pendant la période renseignée.In such a case, the cluster automatically stops if it's been inactive for the specified time.

Étapes suivantesNext steps

Dans ce didacticiel, vous avez appris à :In this tutorial, you learned how to:

  • Créer un service Azure DatabricksCreate an Azure Databricks service
  • Créer un cluster Spark dans Azure DatabricksCreate a Spark cluster in Azure Databricks
  • Créer un notebook dans Azure DatabricksCreate a notebook in Azure Databricks
  • Extraire les données d’un compte Data Lake Storage Gen2Extract data from a Data Lake Storage Gen2 account
  • Transformer des données dans Azure DatabricksTransform data in Azure Databricks
  • Chargement de données dans Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

Passez au tutoriel suivant pour en savoir plus sur la diffusion en continu des données en temps réel dans Azure Databricks à l’aide d’Azure Event Hubs.Advance to the next tutorial to learn about streaming real-time data into Azure Databricks using Azure Event Hubs.