Esercitazione: Estrarre, trasformare e caricare dati con Azure DatabricksTutorial: Extract, transform, and load data by using Azure Databricks

In questa esercitazione viene eseguita un'operazione ETL (Extract, Transform, Load, estrazione, trasformazione e caricamento dei dati) tramite Azure Databricks.In this tutorial, you perform an ETL (extract, transform, and load data) operation by using Azure Databricks. I dati vengono estratti da Azure Data Lake Storage Gen2 in Azure Databricks, vengono sottoposti a trasformazioni in Azure Databricks e quindi vengono caricati in 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.

I passaggi in questa esercitazione usano il connettore di SQL Data Warehouse per Azure Databricks per trasferire i dati in Azure Databricks.The steps in this tutorial use the SQL Data Warehouse connector for Azure Databricks to transfer data to Azure Databricks. Questo connettore usa a sua volta l'Archiviazione BLOB di Azure come archivio temporaneo per i dati trasferiti tra un cluster di Azure Databricks e 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'illustrazione seguente mostra il flusso dell'applicazione:The following illustration shows the application flow:

Azure Databricks con Data Lake Store e SQL Data WarehouseAzure Databricks with Data Lake Store and SQL Data Warehouse

Questa esercitazione illustra le attività seguenti:This tutorial covers the following tasks:

  • Creare un servizio Azure Databricks.Create an Azure Databricks service.
  • Creare un cluster Spark in Azure Databricks.Create a Spark cluster in Azure Databricks.
  • Creare un file system nell'account Data Lake Storage Gen2.Create a file system in the Data Lake Storage Gen2 account.
  • Caricare i dati di esempio nell'account Azure Data Lake Storage Gen2.Upload sample data to the Azure Data Lake Storage Gen2 account.
  • Creare un'entità servizio.Create a service principal.
  • Estrarre i dati dall'account Azure Data Lake Storage Gen2.Extract data from the Azure Data Lake Storage Gen2 account.
  • Trasformare i dati in Azure Databricks.Transform data in Azure Databricks.
  • Caricare i dati in Azure SQL Data Warehouse.Load data into Azure SQL Data Warehouse.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don’t have an Azure subscription, create a free account before you begin.

Nota

Questa esercitazione non può essere eseguita usando una sottoscrizione di valutazione gratuita di Azure.This tutorial cannot be carried out using Azure Free Trial Subscription. Se l'utente ha un account gratuito, andare al proprio profilo e modificare la sottoscrizione a con pagamento in base al consumo.If you have a free account, go to your profile and change your subscription to pay-as-you-go. Per altre informazioni, vedere Account gratuito di Azure.For more information, see Azure free account. Quindi rimuovere il limite di spesa e richiedere un aumento della quota per le vCPU nell'area dell'utente.Then, remove the spending limit, and request a quota increase for vCPUs in your region. Quando si crea l'area di lavoro Azure Databricks, è possibile selezionare il piano tariffario Versione di valutazione (Premium - Unità Databricks gratuite per 14 giorni) per concedere l'accesso gratuito Premium per 14 giorni dell'area di lavoro alle Unità Databricks di Azure.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.

PrerequisitiPrerequisites

Completare queste attività prima di iniziare questa esercitazione:Complete these tasks before you begin this tutorial:

Raccogliere le informazioni necessarieGather the information that you need

Assicurarsi di soddisfare i prerequisiti di questa esercitazione.Make sure that you complete the prerequisites of this tutorial.

Prima di iniziare, è necessario disporre delle informazioni seguenti:Before you begin, you should have these items of information:

✔️ nome del database, nome del server di database, nome utente e password di Azure SQL Data Warehouse.The database name, database server name, user name, and password of your Azure SQL Data warehouse.

✔️ chiave di accesso dell'account di archiviazione BLOB.The access key of your blob storage account.

✔️ nome dell'account di archiviazione Data Lake Storage Gen2.The name of your Data Lake Storage Gen2 storage account.

✔️ ID tenant della sottoscrizione.The tenant ID of your subscription.

✔️ ID applicazione dell'app registrata con Azure Active Directory (Azure AD).The application ID of the app that you registered with Azure Active Directory (Azure AD).

✔️ chiave di autenticazione per l'app registrata con Azure AD.The authentication key for the app that you registered with Azure AD.

Creare un servizio Azure DatabricksCreate an Azure Databricks service

In questa sezione si crea un servizio Azure Databricks con il portale di Azure.In this section, you create an Azure Databricks service by using the Azure portal.

  1. Nel portale di Azure selezionare Crea una risorsa > Analisi > Azure Databricks.In the Azure portal, select Create a resource > Analytics > Azure Databricks.

    Databricks nel portale di AzureDatabricks on Azure portal

  2. In Servizio Azure Databricks specificare i valori seguenti per creare un servizio Databricks:Under Azure Databricks Service, provide the following values to create a Databricks service:

    ProprietàProperty DescrizioneDescription
    Nome area di lavoroWorkspace name Specificare un nome per l'area di lavoro di Databricks.Provide a name for your Databricks workspace.
    SottoscrizioneSubscription Selezionare la sottoscrizione di Azure nell'elenco a discesa.From the drop-down, select your Azure subscription.
    Gruppo di risorseResource group Specificare se si vuole creare un nuovo gruppo di risorse o usarne uno esistente.Specify whether you want to create a new resource group or use an existing one. Un gruppo di risorse è un contenitore con risorse correlate per una soluzione Azure.A resource group is a container that holds related resources for an Azure solution. Per altre informazioni, vedere Panoramica di Gestione risorse di Microsoft Azure.For more information, see Azure Resource Group overview.
    PosizioneLocation Selezionare Stati Uniti occidentali 2.Select West US 2. Per le altre aree disponibili, vedere Prodotti disponibili in base all'area.For other available regions, see Azure services available by region.
    Piano tariffarioPricing Tier Selezionare Standard.Select Standard.
  3. La creazione dell'account richiede alcuni minuti,The account creation takes a few minutes. Per monitorare lo stato dell'operazione, visualizzare l'indicatore di stato nella parte superiore.To monitor the operation status, view the progress bar at the top.

  4. Selezionare Aggiungi al dashboard e quindi Crea.Select Pin to dashboard and then select Create.

Creare un cluster Spark in Azure DatabricksCreate a Spark cluster in Azure Databricks

  1. Nel portale di Azure passare al servizio Databricks creato e selezionare Launch Workspace (Avvia l'area di lavoro).In the Azure portal, go to the Databricks service that you created, and select Launch Workspace.

  2. Si verrà reindirizzati al portale di Azure Databricks.You're redirected to the Azure Databricks portal. Nel portale selezionare Cluster.From the portal, select Cluster.

    Databricks in AzureDatabricks on Azure

  3. Nella pagina New cluster (Nuovo cluster) specificare i valori per creare un cluster.In the New cluster page, provide the values to create a cluster.

    Creare il cluster Databricks Spark in AzureCreate Databricks Spark cluster on Azure

  4. Specificare i valori per i campi seguenti e accettare i valori predefiniti per gli altri campi:Fill in values for the following fields, and accept the default values for the other fields:

    • Immettere un nome per il cluster.Enter a name for the cluster.

    • Assicurarsi di selezionare la casella di controllo Terminate after __ minutes of inactivity (Termina dopo __ minuti di inattività).Make sure you select the Terminate after __ minutes of inactivity check box. Se il cluster non viene usato, specificare una durata in minuti per terminarlo.If the cluster isn't being used, provide a duration (in minutes) to terminate the cluster.

    • Selezionare Crea cluster.Select Create cluster. Quando il cluster è in esecuzione, è possibile collegarvi notebook ed eseguire processi Spark.After the cluster is running, you can attach notebooks to the cluster and run Spark jobs.

Creare un file system nell'account Azure Data Lake Storage Gen2Create a file system in the Azure Data Lake Storage Gen2 account

In questa sezione viene creato un notebook nell'area di lavoro di Azure Databricks e quindi vengono eseguiti frammenti di codice per configurare l'account di archiviazioneIn this section, you create a notebook in Azure Databricks workspace and then run code snippets to configure the storage account

  1. Nel portale di Azure passare al servizio Azure Databricks creato e selezionare Launch Workspace (Avvia l'area di lavoro).In the Azure portal, go to the Azure Databricks service that you created, and select Launch Workspace.

  2. A sinistra selezionare Workspace (Area di lavoro).On the left, select Workspace. Nell'elenco a discesa Workspace (Area di lavoro) selezionare Create (Crea) > Notebook.From the Workspace drop-down, select Create > Notebook.

    Creare un notebook in DatabricksCreate a notebook in Databricks

  3. Nella finestra di dialogo Create Notebook (Crea un notebook) immettere un nome per il notebook.In the Create Notebook dialog box, enter a name for the notebook. Selezionare Scala come linguaggio e quindi selezionare il cluster Spark creato in precedenza.Select Scala as the language, and then select the Spark cluster that you created earlier.

    Specificare i dettagli per un notebook in DatabricksProvide details for a notebook in Databricks

  4. Selezionare Create (Crea).Select Create.

  5. Il blocco di codice seguente imposta le credenziali dell'entità servizio predefinita per qualsiasi account di Azure Data Lake Storage Gen 2 a cui si accede nella sessione Spark.The following code block sets default service principal credentials for any ADLS Gen 2 account accessed in the Spark session. Il secondo blocco di codice accoda il nome dell'account all'impostazione per specificare le credenziali per un account di Azure Data Lake Storage Gen 2 specifico.The second code block appends the account name to the setting to specify credentials for a specific ADLS Gen 2 account. Copiare e incollare uno dei due blocchi di codice nella prima cella del notebook di Azure Databricks.Copy and paste either code block into the first cell of your Azure Databricks notebook.

    Configurazione della sessioneSession configuration

    val appID = "<appID>"
    val password = "<password>"
    val fileSystemName = "<file-system-name>"
    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")
    dbutils.fs.ls("abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/")
    spark.conf.set("fs.azure.createRemoteFileSystemDuringInitialization", "false")
    

    Configurazione dell'accountAccount configuration

    val storageAccountName = "<storage-account-name>"
    val appID = "<app-id>"
    val password = "<password>"
    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", "" + password + "")
    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. In questo blocco di codice sostituire i valori segnaposto <app-id>, <password>, <tenant-id> e <storage-account-name> con i valori raccolti completando i prerequisiti di questa esercitazione.In this code block, replace the <app-id>, <password>, <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. Sostituire il valore segnaposto <file-system-name> con il nome che si vuole assegnare al file system.Replace the <file-system-name> placeholder value with whatever name you want to give the file system.

    • <app-id> e <password> provengono dall'app che è stata registrata con Active Directory durante la creazione di un'entità servizio.The <app-id>, and <password> are from the app that you registered with active directory as part of creating a service principal.

    • <tenant-id> proviene dalla sottoscrizione.The <tenant-id> is from your subscription.

    • <storage-account-name> è il nome dell'account di archiviazione Azure Data Lake Storage Gen2.The <storage-account-name> is the name of your Azure Data Lake Storage Gen2 storage account.

  7. Premere MAIUSC + INVIO per eseguire il codice in questo blocco.Press the SHIFT + ENTER keys to run the code in this block.

Inserire dati di esempio nell'account Azure Data Lake Storage Gen2Ingest sample data into the Azure Data Lake Storage Gen2 account

Prima di iniziare con questa sezione, è necessario completare i prerequisiti seguenti:Before you begin with this section, you must complete the following prerequisites:

Immettere il codice seguente in una cella del notebook: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

Nella cella, premere MAIUSC+INVIO per eseguire il codice.In the cell, press SHIFT + ENTER to run the code.

In una nuova cella al di sotto di questa immettere il codice seguente, sostituendo i valori tra parentesi con gli stessi valori usati in precedenza: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/")

Nella cella, premere MAIUSC+INVIO per eseguire il codice.In the cell, press SHIFT + ENTER to run the code.

Estrarre i dati dall'account Azure Data Lake Storage Gen2Extract data from the Azure Data Lake Storage Gen2 account

  1. È ora possibile caricare il file JSON di esempio come dataframe in Azure Databricks.You can now load the sample json file as a data frame in Azure Databricks. Incollare il codice seguente in una nuova cella.Paste the following code in a new cell. Sostituire i segnaposto tra parentesi quadre con i valori.Replace the placeholders shown in brackets with your values.

    val df = spark.read.json("abfss://<file-system-name>@<storage-account-name>.dfs.core.windows.net/small_radio_json.json")
    
  2. Premere MAIUSC + INVIO per eseguire il codice in questo blocco.Press the SHIFT + ENTER keys to run the code in this block.

  3. Eseguire il codice seguente per visualizzare il contenuto del dataframe:Run the following code to see the contents of the data frame:

    df.show()
    

    L'output visualizzato dovrebbe essere simile al frammento di codice seguente: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|
    ...
    ...
    

    I dati sono stati estratti da Azure Data Lake Storage Gen2 in Azure Databricks.You have now extracted the data from Azure Data Lake Storage Gen2 into Azure Databricks.

Trasformare dati in Azure DatabricksTransform data in Azure Databricks

I dati di esempio non elaborati del file small_radio_json.json sono relativi agli ascoltatori di una stazione radio e includono diverse colonne.The raw sample data small_radio_json.json file captures the audience for a radio station and has a variety of columns. In questa sezione i dati vengono trasformati in modo da recuperare solo colonne specifiche dal set di dati.In this section, you transform the data to only retrieve specific columns from the dataset.

  1. Recuperare prima di tutto solo le colonne firstName, lastName, gender, location e level dal dataframe già creato.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()
    

    L'output restituito sarà simile al frammento di codice seguente: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. È possibile trasformare ulteriormente questi dati per rinominare la colonna level in 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()
    

    L'output restituito sarà simile al frammento di codice seguente.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|
    +---------+----------+------+--------------------+-----------------+
    

Caricare i dati in Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

In questa sezione i dati trasformati vengono caricati in Azure SQL Data Warehouse.In this section, you upload the transformed data into Azure SQL Data Warehouse. Usare il connettore di Azure SQL Data Warehouse per Azure Databricks per caricare direttamente un dataframe come tabella in SQL Data Warehouse.You use the Azure SQL Data Warehouse connector for Azure Databricks to directly upload a dataframe as a table in a SQL data warehouse.

Come indicato in precedenza, il connettore di SQL Data Warehouse usa l'Archiviazione BLOB di Azure come archivio temporaneo per caricare i dati tra Azure Databricks e 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. Specificare quindi prima di tutto la configurazione per la connessione all'account di archiviazione.So, you start by providing the configuration to connect to the storage account. È necessario che l'account sia già stato creato come parte dei prerequisiti per questo articolo.You must already have already created the account as part of the prerequisites for this article.

  1. Specificare la configurazione per l'accesso all'account di archiviazione di Azure da 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. Specificare una cartella temporanea da usare durante lo spostamento dei dati tra Azure Databricks e 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. Eseguire il frammento di codice seguente per archiviare le chiavi di accesso dell'Archiviazione BLOB di Azure nella configurazione.Run the following snippet to store Azure Blob storage access keys in the configuration. In questo modo si assicura che non sia necessario mantenere la chiave di accesso nel notebook in testo normale.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. Specificare i valori per la connessione all'istanza di Azure SQL Data Warehouse.Provide the values to connect to the Azure SQL Data Warehouse instance. È necessario che sia stata creata un'istanza di SQL Data Warehouse come prerequisito.You must have created a SQL data warehouse as a prerequisite. Usare il nome completo del server per dwServer.Use the fully qualified server name for dwServer. Ad esempio: <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. Eseguire il frammento di codice seguente per caricare il dataframe trasformato, renamedColumnsDf, come tabella in SQL Data Warehouse. Il frammento di codice crea una tabella denominata SampleTable nel database 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()
    

    Nota

    Questo esempio usa il flag forward_spark_azure_storage_credentials, che fa sì che SQL Data Warehouse acceda ai dati dall'archiviazione BLOB tramite una chiave di accesso.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. Questo è l'unico metodo di autenticazione supportato.This is the only supported method of authentication.

    Se l'archiviazione BLOB di Azure è limitata alla selezione di reti virtuali, SQL Data Warehouse richiede l'identità del servizio gestita anziché le chiavi di accesso.If your Azure Blob Storage is restricted to select virtual networks, SQL Data Warehouse requires Managed Service Identity instead of Access Keys. Questo comportamento provoca l'errore "This request is not authorized to perform this operation" (La richiesta non è autorizzata a eseguire questa operazione).This will cause the error "This request is not authorized to perform this operation."

  6. Connettersi al database SQL e verificare che sia visualizzato un database denominato SampleTable.Connect to the SQL database and verify that you see a database named SampleTable.

    Verificare la tabella di esempioVerify the sample table

  7. Eseguire una query selezionata per verificare i contenuti della tabella.Run a select query to verify the contents of the table. Dovrebbe includere gli stessi dati del dataframe renamedColumnsDf.The table should have the same data as the renamedColumnsDF dataframe.

    Verificare il contenuto della tabella di esempioVerify the sample table content

Pulire le risorseClean up resources

Dopo aver concluso l'esercitazione è possibile terminare il cluster.After you finish the tutorial, you can terminate the cluster. Nell'area di lavoro di Azure Databricks selezionare Clusters a sinistra.From the Azure Databricks workspace, select Clusters on the left. Per terminare il cluster, in Actions (Azioni) selezionare i puntini di sospensione (...) e quindi l'icona Terminate (Terminate).For the cluster to terminate, under Actions, point to the ellipsis (...) and select the Terminate icon.

Arrestare un cluster DatabricksStop a Databricks cluster

Se non viene terminato manualmente, il cluster si arresta automaticamente se è stata selezionata la casella di controllo Terminate after __ minutes of inactivity (Termina dopo __ minuti di inattività) quando è stato creato.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. In tal caso, il cluster viene automaticamente arrestato se è rimasto inattivo per il tempo specificato.In such a case, the cluster automatically stops if it's been inactive for the specified time.

Passaggi successiviNext steps

Questa esercitazione illustra come:In this tutorial, you learned how to:

  • Creare un servizio Azure DatabricksCreate an Azure Databricks service
  • Creare un cluster Spark in Azure DatabricksCreate a Spark cluster in Azure Databricks
  • Creare un notebook in Azure DatabricksCreate a notebook in Azure Databricks
  • Estrarre i dati da un account Data Lake Storage Gen2Extract data from a Data Lake Storage Gen2 account
  • Trasformare dati in Azure DatabricksTransform data in Azure Databricks
  • Caricare i dati in Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

Passare all'esercitazione successiva per ottenere informazioni sullo streaming di dati in tempo reale in Azure Databricks tramite Hub eventi di Azure.Advance to the next tutorial to learn about streaming real-time data into Azure Databricks using Azure Event Hubs.