Esercitazione: Eseguire query su un contenitore Docker Linux SQL Server in una rete virtuale da un notebook di Azure Databricks

Questa esercitazione illustra come integrare Azure Databricks con un contenitore Docker Linux SQL Server in una rete virtuale.

Questa esercitazione descrive come:

  • Distribuire un'area di lavoro di Azure Databricks in una rete virtuale
  • Installare una macchina virtuale Linux in una rete pubblica
  • Installare Docker
  • Installare Microsoft SQL Server in Linux contenitore docker
  • Eseguire query sull'SQL Server usando JDBC da un notebook di Databricks

Prerequisiti

Creare una macchina virtuale Linux

  1. Nel portale di Azure selezionare l'icona per Macchine virtuali. Selezionare quindi + Aggiungi.

    Aggiungere una nuova macchina virtuale di Azure

  2. Nella scheda Nozioni di base scegliere Ubuntu Server 18.04 LTS e modificare le dimensioni della macchina virtuale in B2s. Scegliere un nome utente e una password amministratore.

    Scheda Nozioni di base della nuova configurazione della macchina virtuale

  3. Passare alla scheda Rete . Scegliere la rete virtuale e la subnet pubblica che include il cluster Azure Databricks. Selezionare Rivedi e crea, quindi Crea per distribuire la macchina virtuale.

    Scheda Rete della nuova configurazione della macchina virtuale

  4. Al termine della distribuzione, passare alla macchina virtuale. Si noti l'indirizzo IP pubblico e la rete virtuale/subnet nella panoramica. Selezionare l'indirizzo IP pubblico

    Panoramica della macchina virtuale

  5. Modificare l'assegnazione in Statico e immettere un'etichetta di nome DNS. Selezionare Salva e riavviare la macchina virtuale.

    Configurazione dell'indirizzo IP pubblico

  6. Selezionare la scheda Rete in Impostazioni. Si noti che il gruppo di sicurezza di rete creato durante la distribuzione di Azure Databricks è associato alla macchina virtuale. Selezionare Aggiungi regola porta in ingresso.

  7. Aggiungere una regola per aprire la porta 22 per SSH. Usare le impostazioni seguenti:

    Impostazione Valore suggerito Descrizione
    Fonte Indirizzi IP Gli indirizzi IP specificano che il traffico in ingresso da un indirizzo IP di origine specifico sarà consentito o negato da questa regola.
    Indirizzi IP di origine <ip pubblico> Immettere l'indirizzo IP pubblico. È possibile trovare l'indirizzo IP pubblico visitando bing.com e cercando "my IP".
    Intervalli di porte di origine * Consenti traffico da qualsiasi porta.
    Destinazione Indirizzi IP Gli indirizzi IP specificano che il traffico in uscita per un indirizzo IP di origine specifico sarà consentito o negato da questa regola.
    Indirizzi IP di destinazione <ip pubblico della macchina virtuale> Immettere l'indirizzo IP pubblico della macchina virtuale. È possibile trovare questa funzionalità nella pagina Panoramica della macchina virtuale.
    Intervalli di porte di destinazione 22 Aprire la porta 22 per SSH.
    Priorità 290 Assegnare alla regola una priorità.
    Nome ssh-databricks-tutorial-vm Assegnare alla regola un nome.

    Aggiungere una regola di sicurezza in ingresso per la porta 22

  8. Aggiungere una regola per aprire la porta 1433 per SQL con le impostazioni seguenti:

    Impostazione Valore suggerito Descrizione
    Fonte Qualsiasi L'origine specifica che il traffico in ingresso da un indirizzo IP di origine specifico sarà consentito o negato da questa regola.
    Intervalli di porte di origine * Consenti traffico da qualsiasi porta.
    Destinazione Indirizzi IP Gli indirizzi IP specificano che il traffico in uscita per un indirizzo IP di origine specifico sarà consentito o negato da questa regola.
    Indirizzi IP di destinazione <ip pubblico della macchina virtuale> Immettere l'indirizzo IP pubblico della macchina virtuale. È possibile trovare questa funzionalità nella pagina Panoramica della macchina virtuale.
    Intervalli di porte di destinazione 1433 Aprire la porta 22 per SQL Server.
    Priorità 300 Assegnare alla regola una priorità.
    Nome sql-databricks-tutorial-vm Assegnare alla regola un nome.

    Aggiungere una regola di sicurezza in ingresso per la porta 1433

Eseguire SQL Server in un contenitore Docker

  1. Aprire Ubuntu per Windows o qualsiasi altro strumento che consente di accedere a SSH nella macchina virtuale. Passare alla macchina virtuale nel portale di Azure e selezionare Connetti per ottenere il comando SSH necessario per connettersi.

    Connettersi alla macchina virtuale

  2. Immettere il comando nel terminale Ubuntu e immettere la password amministratore creata quando è stata configurata la macchina virtuale.

    Accesso SSH del terminale Ubuntu

  3. Usare il comando seguente per installare Docker nella macchina virtuale.

    sudo apt-get install docker.io
    

    Verificare l'installazione di Docker con il comando seguente:

    sudo docker --version
    
  4. Installare l'immagine.

    sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
    

    Controllare le immagini.

    sudo docker images
    
  5. Eseguire il contenitore dall'immagine.

    sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password1234' -p 1433:1433 --name sql1  -d mcr.microsoft.com/mssql/server:2017-latest
    

    Verificare che il contenitore sia in esecuzione.

    sudo docker ps -a
    

Creare un database SQL

  1. Aprire SQL Server Management Studio e connettersi al server usando il nome del server e l'autenticazione SQL. Il nome utente di accesso è SA e la password è la password impostata nel comando Docker. La password nel comando di esempio è Password1234.

    Connettersi a SQL Server tramite SQL Server Management Studio

  2. Dopo aver eseguito la connessione, selezionare Nuova query e immettere il frammento di codice seguente per creare un database, una tabella e inserire alcuni record nella tabella.

    CREATE DATABASE MYDB;
    GO
    USE MYDB;
    CREATE TABLE states(Name VARCHAR(20), Capitol VARCHAR(20));
    INSERT INTO states VALUES ('Delaware','Dover');
    INSERT INTO states VALUES ('South Carolina','Columbia');
    INSERT INTO states VALUES ('Texas','Austin');
    SELECT * FROM states
    GO
    

    Query per creare un database SQL Server

Eseguire query SQL Server da Azure Databricks

  1. Passare all'area di lavoro di Azure Databricks e verificare che sia stato creato un cluster come parte dei prerequisiti. Selezionare quindi Crea un notebook. Assegnare un nome al notebook, selezionare Python come linguaggio e selezionare il cluster creato.

    Nuove impostazioni del notebook di Databricks

  2. Usare il comando seguente per eseguire il ping dell'indirizzo IP interno della macchina virtuale SQL Server. Il ping dovrebbe avere esito positivo. In caso contrario, verificare che il contenitore sia in esecuzione ed esaminare la configurazione del gruppo di sicurezza di rete.If not not, verify that the container is running, and review the network security group (NSG) configuration.

    %sh
    ping 10.179.64.4
    

    È anche possibile usare il comando nslookup per esaminare.

    %sh
    nslookup databricks-tutorial-vm.westus2.cloudapp.azure.com
    
  3. Dopo aver eseguito il ping del SQL Server, è possibile eseguire query sul database e sulle tabelle. Eseguire il codice Python seguente:

    jdbcHostname = "10.179.64.4"
    jdbcDatabase = "MYDB"
    userName = 'SA'
    password = 'Password1234'
    jdbcPort = 1433
    jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user={3};password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase, userName, password)
    
    df = spark.read.jdbc(url=jdbcUrl, table='states')
    display(df)
    

Pulire le risorse

Quando non sono più necessari, eliminare il gruppo di risorse, l'area di lavoro di Azure Databricks e tutte le risorse correlate. L'eliminazione del processo evita la fatturazione non necessaria. Se si prevede di usare l'area di lavoro di Azure Databricks in futuro, è possibile arrestare il cluster e riavviarlo in un secondo momento. Se non si intende continuare a usare questa area di lavoro di Azure Databricks, eliminare tutte le risorse create in questa esercitazione seguendo questa procedura:

  1. Nel menu a sinistra nel portale di Azure fare clic su Gruppi di risorse e quindi sul nome del gruppo di risorse creato.

  2. Nella pagina del gruppo di risorse selezionare Elimina, digitare il nome della risorsa da eliminare nella casella di testo e quindi selezionare di nuovo Elimina .

Passaggi successivi

Passare all'articolo successivo per informazioni su come estrarre, trasformare e caricare dati usando Azure Databricks.