Tutorial: Extrahieren, Transformieren und Laden von Daten mithilfe von Azure DatabricksTutorial: Extract, transform, and load data by using Azure Databricks

In diesem Tutorial führen Sie mithilfe von Azure Databricks einen ETL-Vorgang (Extrahieren, Transformieren und Laden) für Daten durch.In this tutorial, you perform an ETL (extract, transform, and load data) operation by using Azure Databricks. Sie extrahieren Daten aus Azure Data Lake Storage Gen2 in Azure Databricks, führen Transformationen für die Daten in Azure Databricks aus und laden die transformierten Daten anschließend 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.

Bei den Schritten in diesem Tutorial wird für die Datenübertragung an Azure Databricks der SQL Data Warehouse-Connector für Azure Databricks verwendet.The steps in this tutorial use the SQL Data Warehouse connector for Azure Databricks to transfer data to Azure Databricks. Dieser Connector verwendet wiederum Azure Blob Storage als temporären Speicher für die Daten, die zwischen einem Azure Databricks-Cluster und Azure SQL Data Warehouse übertragen werden.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.

In der folgenden Abbildung ist der Anwendungsfluss dargestellt:The following illustration shows the application flow:

Azure Databricks mit Data Lake Store und SQL Data WarehouseAzure Databricks with Data Lake Store and SQL Data Warehouse

Dieses Tutorial enthält die folgenden Aufgaben:This tutorial covers the following tasks:

  • Erstellen Sie einen Azure Databricks-Dienst.Create an Azure Databricks service.
  • Erstellen eines Spark-Clusters in Azure DatabricksCreate a Spark cluster in Azure Databricks.
  • Erstellen eines Dateisystems im Data Lake Storage Gen2-KontoCreate a file system in the Data Lake Storage Gen2 account.
  • Hochladen von Beispieldaten in das Azure Data Lake Storage Gen2-KontoUpload sample data to the Azure Data Lake Storage Gen2 account.
  • Erstellen eines DienstprinzipalsCreate a service principal.
  • Extrahieren von Daten aus dem Azure Data Lake Storage Gen2-KontoExtract data from the Azure Data Lake Storage Gen2 account.
  • Transformieren von Daten in Azure DatabricksTransform data in Azure Databricks.
  • Laden von Daten in Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.If you don’t have an Azure subscription, create a free account before you begin.

Hinweis

Dieses Tutorial kann nicht mit dem kostenlosen Azure-Testabonnement absolviert werden.This tutorial cannot be carried out using Azure Free Trial Subscription. Wenn Sie ein kostenloses Konto haben, rufen Sie Ihr Profil auf, und ändern Sie Ihr Abonnement auf Nutzungsbasierte Bezahlung.If you have a free account, go to your profile and change your subscription to pay-as-you-go. Weitere Informationen finden Sie unter Kostenloses Azure-Konto.For more information, see Azure free account. Entfernen Sie das dann Ausgabenlimit, und fordern Sie die Erhöhung des Kontingents für vCPUs in Ihrer Region an.Then, remove the spending limit, and request a quota increase for vCPUs in your region. Wenn Sie Ihren Azure Databricks-Arbeitsbereich erstellen, können Sie den Tarif Testversion (Premium – 14 Tage kostenlosen DBUs) auswählen, damit Sie über den Arbeitsbereich 14 Tage lang auf kostenlose Premium Azure Databricks-DBUs zugreifen können.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.

VoraussetzungenPrerequisites

Schließen Sie diese Aufgaben ab, bevor Sie dieses Tutorial beginnen:Complete these tasks before you begin this tutorial:

Sammeln der benötigten InformationenGather the information that you need

Stellen Sie sicher, dass die Voraussetzungen für dieses Tutorial erfüllt sind.Make sure that you complete the prerequisites of this tutorial.

Vergewissern Sie sich, dass Sie über folgende Informationen verfügen:Before you begin, you should have these items of information:

✔️ Datenbankname, Name des Datenbankservers, Benutzername und Kennwort Ihres Azure SQL Data WarehouseThe database name, database server name, user name, and password of your Azure SQL Data warehouse.

✔️ Zugriffsschlüssel Ihres BlobspeicherkontosThe access key of your blob storage account.

✔️ Name Ihres Data Lake Storage Gen2-SpeicherkontosThe name of your Data Lake Storage Gen2 storage account.

✔️ Mandanten-ID Ihres AbonnementsThe tenant ID of your subscription.

✔️ Anwendungs-ID der App, die Sie bei Azure Active Directory (Azure AD) registriert habenThe application ID of the app that you registered with Azure Active Directory (Azure AD).

✔️ Authentifizierungsschlüssel für die App, die Sie bei Azure AD registriert habenThe authentication key for the app that you registered with Azure AD.

Erstellen eines Azure Databricks-DienstsCreate an Azure Databricks service

In diesem Abschnitt erstellen Sie einen Azure Databricks-Dienst über das Azure-Portal.In this section, you create an Azure Databricks service by using the Azure portal.

  1. Wählen Sie im Azure-Portalmenü die Option Ressource erstellen aus.From the Azure portal menu, select Create a resource.

    Erstellen einer Ressource im Azure-Portal

    Wählen Sie dann Analyse > Azure Databricks aus.Then, select Analytics > Azure Databricks.

    Erstellen von Azure Databricks im Azure-Portal

  2. Geben Sie unter Azure Databricks-Dienst die folgenden Werte an, um einen Databricks-Dienst zu erstellen:Under Azure Databricks Service, provide the following values to create a Databricks service:

    EigenschaftProperty BESCHREIBUNGDescription
    ArbeitsbereichsnameWorkspace name Geben Sie einen Namen für Ihren Databricks-Arbeitsbereich an.Provide a name for your Databricks workspace.
    AbonnementSubscription Wählen Sie in der Dropdownliste Ihr Azure-Abonnement aus.From the drop-down, select your Azure subscription.
    RessourcengruppeResource group Geben Sie an, ob Sie eine neue Ressourcengruppe erstellen oder eine vorhandene Ressourcengruppe verwenden möchten.Specify whether you want to create a new resource group or use an existing one. Eine Ressourcengruppe ist ein Container, der verwandte Ressourcen für eine Azure-Lösung enthält.A resource group is a container that holds related resources for an Azure solution. Weitere Informationen finden Sie in der Übersicht über den Azure Resource Manager.For more information, see Azure Resource Group overview.
    LocationLocation Wählen Sie USA, Westen 2 aus.Select West US 2. Informationen zu weiteren verfügbaren Regionen finden Sie unter Verfügbare Produkte nach Region.For other available regions, see Azure services available by region.
    TarifPricing Tier Wählen Sie Standard aus.Select Standard.
  3. Die Kontoerstellung dauert einige Minuten.The account creation takes a few minutes. Den Status des Vorgangs können Sie anhand der Statusanzeige im oberen Bereich verfolgen.To monitor the operation status, view the progress bar at the top.

  4. Aktivieren Sie das Kontrollkästchen An Dashboard anheften, und klicken Sie anschließend auf Erstellen.Select Pin to dashboard and then select Create.

Erstellen eines Spark-Clusters in Azure DatabricksCreate a Spark cluster in Azure Databricks

  1. Navigieren Sie im Azure-Portal zu dem erstellten Databricks-Dienst, und wählen Sie Launch Workspace (Arbeitsbereich starten) aus.In the Azure portal, go to the Databricks service that you created, and select Launch Workspace.

  2. Sie werden zum Azure Databricks-Portal weitergeleitet.You're redirected to the Azure Databricks portal. Klicken Sie im Portal auf Cluster.From the portal, select Cluster.

    Databricks in AzureDatabricks on Azure

  3. Geben Sie auf der Seite Neuer Cluster die erforderlichen Werte an, um einen Cluster zu erstellen.In the New cluster page, provide the values to create a cluster.

    Erstellen eines Databricks Spark-Clusters in AzureCreate Databricks Spark cluster on Azure

  4. Geben Sie Werte für die folgenden Felder an, und übernehmen Sie bei den anderen Feldern die Standardwerte:Fill in values for the following fields, and accept the default values for the other fields:

    • Geben Sie einen Namen für den Cluster ein.Enter a name for the cluster.

    • Aktivieren Sie das Kontrollkästchen Terminate after __ minutes of inactivity (Nach __ Minuten Inaktivität beenden).Make sure you select the Terminate after __ minutes of inactivity check box. Falls der Cluster nicht verwendet wird, geben Sie an, nach wie vielen Minuten er beendet werden soll.If the cluster isn't being used, provide a duration (in minutes) to terminate the cluster.

    • Klicken Sie auf Cluster erstellen.Select Create cluster. Wenn der Cluster ausgeführt wird, können Sie Notebooks an den Cluster anfügen und Spark-Aufträge ausführen.After the cluster is running, you can attach notebooks to the cluster and run Spark jobs.

Erstellen eines Dateisystems im Azure Data Lake Storage Gen2-KontoCreate a file system in the Azure Data Lake Storage Gen2 account

In diesem Abschnitt erstellen Sie ein Notebook im Azure Databricks-Arbeitsbereich und führen anschließend Codeausschnitte aus, um das Speicherkonto zu konfigurieren.In this section, you create a notebook in Azure Databricks workspace and then run code snippets to configure the storage account

  1. Navigieren Sie im Azure-Portal zu dem erstellten Azure Databricks-Dienst, und wählen Sie Launch Workspace (Arbeitsbereich starten) aus.In the Azure portal, go to the Azure Databricks service that you created, and select Launch Workspace.

  2. Wählen Sie im linken Bereich die Option Arbeitsbereich aus.On the left, select Workspace. Wählen Sie in der Dropdownliste Arbeitsbereich die Option Erstellen > Notebook aus.From the Workspace drop-down, select Create > Notebook.

    Erstellen eines Notebooks in DatabricksCreate a notebook in Databricks

  3. Geben Sie im Dialogfeld Notizbuch erstellen einen Namen für das Notebook ein.In the Create Notebook dialog box, enter a name for the notebook. Wählen Sie Scala als Sprache und anschließend den zuvor erstellten Spark-Cluster aus.Select Scala as the language, and then select the Spark cluster that you created earlier.

    Angeben von Details für ein Notebook in DatabricksProvide details for a notebook in Databricks

  4. Klicken Sie auf Erstellen.Select Create.

  5. Der folgende Codeblock legt die Standardanmeldeinformationen für jedes ADLS Gen 2-Konto fest, auf das in der Spark-Sitzung zugegriffen wird.The following code block sets default service principal credentials for any ADLS Gen 2 account accessed in the Spark session. Der zweite Codeblock fügt den Kontonamen an die Einstellung an, um Anmeldeinformationen für ein bestimmtes ADLS Gen 2-Konto anzugeben.The second code block appends the account name to the setting to specify credentials for a specific ADLS Gen 2 account. Kopieren Sie jeden Codeblock, und fügen Sie diese in die erste Zelle Ihres Azure Databricks-Notebooks ein.Copy and paste either code block into the first cell of your Azure Databricks notebook.

    SitzungskonfigurationSession 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")
    

    KontokonfigurationAccount 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. Ersetzen Sie in diesem Codeblock die Platzhalterwerte <app-id>, <password>, <tenant-id> und <storage-account-name> durch die Werte, die Sie bei der Vorbereitung dieses Tutorials gesammelt haben.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. Ersetzen Sie den Platzhalterwert <file-system-name> durch den gewünschten Namen für das Dateisystem.Replace the <file-system-name> placeholder value with whatever name you want to give the file system.

    • <app-id> und <password> stammen aus der App, die Sie im Rahmen der Dienstprinzipalerstellung bei Active Directory registriert haben.The <app-id>, and <password> are from the app that you registered with active directory as part of creating a service principal.

    • <tenant-id> stammt aus Ihrem Abonnement.The <tenant-id> is from your subscription.

    • <storage-account-name> ist der Name Ihres Azure Data Lake Storage Gen2-Speicherkontos.The <storage-account-name> is the name of your Azure Data Lake Storage Gen2 storage account.

  7. Drücken Sie UMSCHALT+EINGABE, um den Code in diesem Block auszuführen.Press the SHIFT + ENTER keys to run the code in this block.

Erfassen von Beispieldaten im Azure Data Lake Storage Gen2-KontoIngest sample data into the Azure Data Lake Storage Gen2 account

Bevor Sie mit diesem Abschnitt beginnen, müssen folgende Schritte ausgeführt werden:Before you begin with this section, you must complete the following prerequisites:

Geben Sie den folgenden Code in eine Zelle des Notebooks ein: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

Drücken Sie in der ZelleUMSCHALT+EINGABE, um den Code auszuführen.In the cell, press SHIFT + ENTER to run the code.

Geben Sie als Nächstes in einer darunterliegenden Zelle den folgenden Code ein, und ersetzen Sie dabei die in Klammern angegebenen Werte durch die zuvor verwendeten Werte: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/")

Drücken Sie in der ZelleUMSCHALT+EINGABE, um den Code auszuführen.In the cell, press SHIFT + ENTER to run the code.

Extrahieren von Daten aus dem Azure Data Lake Storage Gen2-KontoExtract data from the Azure Data Lake Storage Gen2 account

  1. Nun können Sie die JSON-Beispieldatei als Datenrahmen in Azure Databricks laden.You can now load the sample json file as a data frame in Azure Databricks. Fügen Sie den folgenden Code in eine neue Zelle ein.Paste the following code in a new cell. Ersetzen Sie die in Klammern angegebenen Platzhalter durch Ihre Werte.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. Drücken Sie UMSCHALT+EINGABE, um den Code in diesem Block auszuführen.Press the SHIFT + ENTER keys to run the code in this block.

  3. Führen Sie den folgenden Code aus, um den Inhalt des Datenrahmens anzuzeigen:Run the following code to see the contents of the data frame:

    df.show()
    

    Es wird ungefähr folgender Codeausschnitt angezeigt: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|
    ...
    ...
    

    Damit haben Sie die Daten aus Azure Data Lake Storage Gen2 in Azure Databricks extrahiert.You have now extracted the data from Azure Data Lake Storage Gen2 into Azure Databricks.

Transformieren von Daten in Azure DatabricksTransform data in Azure Databricks

Die unformatierten Beispieldaten aus der Datei small_radio_json.json dienen zur Erfassung der Zuhörer eines Radiosenders und enthalten eine Reihe von Spalten.The raw sample data small_radio_json.json file captures the audience for a radio station and has a variety of columns. In diesem Abschnitt transformieren Sie die Daten, um nur bestimmte Spalten aus dem Dataset abzurufen.In this section, you transform the data to only retrieve specific columns from the dataset.

  1. Rufen Sie zunächst nur die Spalten firstName, lastName, gender, location und level aus dem bereits erstellten Datenrahmen ab.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()
    

    Daraufhin erhalten Sie eine Ausgabe wie die folgende: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. Diese Daten können noch weiter transformiert werden, um die Spalte level in subscription_type umzubenennen:You can further transform this data to rename the column level to subscription_type.

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

    Daraufhin erhalten Sie eine Ausgabe wie die folgende: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|
    +---------+----------+------+--------------------+-----------------+
    

Laden von Daten in Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

In diesem Abschnitt laden Sie die transformierten Daten in Azure SQL Data Warehouse hoch.In this section, you upload the transformed data into Azure SQL Data Warehouse. Sie verwenden den Azure SQL Data Warehouse-Connector für Azure Databricks, um einen Datenrahmen direkt als Tabelle in eine SQL Data Warehouse-Instanz hochzuladen.You use the Azure SQL Data Warehouse connector for Azure Databricks to directly upload a dataframe as a table in a SQL data warehouse.

Der SQL Date Warehouse-Connector verwendet, wie bereits erwähnt, Azure Blob Storage als temporären Speicher, um Daten zwischen Azure Databricks und Azure SQL Data Warehouse hochzuladen.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. Geben Sie daher zunächst die Konfiguration für die Verbindungsherstellung mit dem Speicherkonto an.So, you start by providing the configuration to connect to the storage account. Das Konto muss im Rahmen der Vorbereitung für diesen Artikel bereits erstellt worden sein.You must already have already created the account as part of the prerequisites for this article.

  1. Geben Sie die Konfiguration für den Zugriff auf das Azure Storage-Konto über Azure Databricks an.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. Geben Sie einen temporären Ordner für die Verschiebung von Daten zwischen Azure Databricks und Azure SQL Data Warehouse an.Specify a temporary folder to use while moving data between Azure Databricks and Azure SQL Data Warehouse.

    val tempDir = "wasbs://" + blobContainer + "@" + blobStorage +"/tempDirs"
    
  3. Führen Sie den folgenden Codeausschnitt aus, um Azure Blob-Speicherzugriffsschlüssel in der Konfiguration zu speichern.Run the following snippet to store Azure Blob storage access keys in the configuration. Dadurch wird sichergestellt, dass Sie den Zugriffsschlüssel im Notebook nicht als Klartext speichern müssen.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. Geben Sie die Werte für die Verbindungsherstellung mit der Azure SQL Data Warehouse-Instanz an.Provide the values to connect to the Azure SQL Data Warehouse instance. Im Rahmen der Vorbereitung muss bereits eine SQL Data Warehouse-Instanz erstellt worden sein.You must have created a SQL data warehouse as a prerequisite. Verwenden Sie den vollqualifizierten Servernamen für dwServer.Use the fully qualified server name for dwServer. Beispiel: <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. Führen Sie den folgenden Codeausschnitt aus, um den transformierten Datenrahmen (renamedColumnsDF) als Tabelle in einer SQL Data Warehouse-Instanz zu laden. Dieser Codeausschnitt erstellt in der SQL-Datenbank eine Tabelle namens SampleTable.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()
    

    Hinweis

    Dieses Beispiel verwendet das Flag forward_spark_azure_storage_credentials, das bewirkt, dass SQL Data Warehouse über einen Zugriffsschlüssel auf Daten im Blobspeicher zugreift.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. Dies ist die einzige unterstützte Authentifizierungsmethode.This is the only supported method of authentication.

    Wenn Ihr Azure Blob Storage auf ausgewählte virtuelle Netzwerke beschränkt ist, benötigt SQL Data Warehouse eine verwaltete Dienstidentität anstelle von Zugriffsschlüsseln.If your Azure Blob Storage is restricted to select virtual networks, SQL Data Warehouse requires Managed Service Identity instead of Access Keys. Dies führt zum Fehler „Diese Anforderung ist nicht berechtigt, diesen Vorgang auszuführen“.This will cause the error "This request is not authorized to perform this operation."

  6. Stellen Sie eine Verbindung mit der SQL-Datenbank her, und vergewissern Sie sich, dass eine Datenbank namens SampleTable vorhanden ist.Connect to the SQL database and verify that you see a database named SampleTable.

    Überprüfen der BeispieltabelleVerify the sample table

  7. Führen Sie zur Überprüfung des Tabelleninhalts eine SELECT-Abfrage aus.Run a select query to verify the contents of the table. Die Tabelle sollte die gleichen Daten enthalten wie der Datenrahmen renamedColumnsDF.The table should have the same data as the renamedColumnsDF dataframe.

    Überprüfen des Inhalts der BeispieltabelleVerify the sample table content

Bereinigen von RessourcenClean up resources

Nach Abschluss des Tutorials können Sie den Cluster beenden.After you finish the tutorial, you can terminate the cluster. Wählen Sie hierzu im linken Bereich des Azure Databricks-Arbeitsbereichs die Option Cluster aus.From the Azure Databricks workspace, select Clusters on the left. Zeigen Sie zum Beenden des Clusters unter Aktionen auf die Auslassungspunkte (...), und wählen Sie das Symbol Beenden aus.For the cluster to terminate, under Actions, point to the ellipsis (...) and select the Terminate icon.

Beenden eines Databricks-ClustersStop a Databricks cluster

Wenn Sie den Cluster nicht manuell beenden, wird er automatisch beendet, sofern Sie bei der Erstellung des Clusters das Kontrollkästchen Terminate after __ minutes of inactivity (Nach __ Minuten Inaktivität beenden) aktiviert haben.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 diesem Fall wird der Cluster automatisch beendet, wenn er für den angegebenen Zeitraum inaktiv war.In such a case, the cluster automatically stops if it's been inactive for the specified time.

Nächste SchritteNext steps

In diesem Tutorial haben Sie Folgendes gelernt:In this tutorial, you learned how to:

  • Erstellen eines Azure Databricks-DienstsCreate an Azure Databricks service
  • Erstellen eines Spark-Clusters in Azure DatabricksCreate a Spark cluster in Azure Databricks
  • Erstellen eines Notebooks in Azure DatabricksCreate a notebook in Azure Databricks
  • Extrahieren von Daten aus einem Data Lake Storage Gen2-KontoExtract data from a Data Lake Storage Gen2 account
  • Transformieren von Daten in Azure DatabricksTransform data in Azure Databricks
  • Laden von Daten in Azure SQL Data WarehouseLoad data into Azure SQL Data Warehouse

Das nächste Tutorial beschäftigt sich mit dem Streamen von Echtzeitdaten an Azure Databricks unter Verwendung von Azure Event Hubs.Advance to the next tutorial to learn about streaming real-time data into Azure Databricks using Azure Event Hubs.

Stream data into Azure Databricks using Event Hubs (Streamen von Daten an Azure Databricks unter Verwendung von Event Hubs)Stream data into Azure Databricks using Event Hubs