Usare Spark & Hive Tools per Visual Studio Code

Informazioni su come usare Spark & Hive Tools per Visual Studio Code. Usare gli strumenti per creare e inviare processi batch Apache Hive, query Hive interattive e script PySpark per Apache Spark. Verrà prima di tutto descritto come installare Spark & Hive Tools in Visual Studio Code. Quindi verrà illustrato come inviare processi a tali strumenti.

È possibile installare Spark & Hive Tools nelle piattaforme supportate da Visual Studio Code. Si notino i prerequisiti seguenti per le diverse piattaforme.

Prerequisiti

Per completare i passaggi in questo articolo, è necessario quanto segue:

Installare Spark & Hive Tools

Dopo aver soddisfatto i prerequisiti, è possibile installare Spark & Hive Tools per Visual Studio Code seguendo questa procedura:

  1. Aprire Visual Studio Code.

  2. Dalla barra dei menu passare a Visualizza>Estensioni.

  3. Nella casella di ricerca immettere Spark & Hive.

  4. Selezionare Spark & Hive Tools nei risultati della ricerca e quindi selezionare Installa:

    Spark & Hive for Visual Studio Code Python install.

  5. Selezionare Ricarica quando è necessario.

Aprire una cartella di lavoro

Per aprire una cartella di lavoro e creare un file in Visual Studio Code, seguire questa procedura:

  1. Dalla barra dei menu passare a File>Apri cartella...>C:\HD\HDexample e quindi selezionare il pulsante Seleziona cartella. La cartella verrà visualizzata nella visualizzazione Explorer a sinistra.

  2. Nella visualizzazione Esplora risorse selezionare la cartella HDexample e quindi selezionare l'icona Nuovo file accanto alla cartella di lavoro:

    visual studio code new file icon.

  3. Denominare il nuovo file usando l'estensione .hql (query Hive) o ( .py script Spark). Questo esempio usa HelloWorld.hql.

Configurare l'ambiente di Azure

Per un utente cloud nazionale, seguire questa procedura per impostare prima l'ambiente di Azure e quindi usare il comando Azure: Sign In (Azure: Sign In ) per accedere ad Azure:

  1. Passare a Preferenze> file>Impostazioni.

  2. Cercare nella stringa seguente: Azure: Cloud.

  3. Selezionare il cloud nazionale dall'elenco:

    Set default login entry configuration.

Connettersi a un account Azure

Prima di poter inviare script ai cluster da Visual Studio Code, l'utente può accedere alla sottoscrizione di Azure o collegare un cluster HDInsight. Usare il nome utente/password di Ambari o le credenziali aggiunte a un dominio per il cluster ESP per connettersi al cluster HDInsight. Seguire questa procedura per connettersi ad Azure:

  1. Dalla barra dei menu passare a Visualizza>riquadro comandi... e immettere Azure: Accedi:

    Spark & Hive Tools for Visual Studio Code login.

  2. Seguire le istruzioni per accedere ad Azure. Dopo essersi connessi, il nome dell'account Azure viene visualizzato sulla barra di stato nell'angolo in basso a sinistra della finestra di Visual Studio Code.

È possibile collegare un cluster normale usando un nome utente gestito da Apache Ambari oppure collegare un cluster Hadoop sicuro di Enterprise Security Pack usando un nome utente di dominio , ad esempio . user1@contoso.com

  1. Dalla barra dei menu passare a Visualizza>riquadro comandi... e immettere Spark/Hive: Collega un cluster.

    Command Palette link cluster command.

  2. Selezionare il tipo di cluster collegato Azure HDInsight.

  3. Immettere l'URL del cluster HDInsight.

  4. Immettere il nome utente di Ambari; il valore predefinito è admin.

  5. Immettere la password di Ambari.

  6. Selezionare il tipo di cluster.

  7. Impostare il nome visualizzato del cluster (facoltativo).

  8. Esaminare la visualizzazione OUTPUT per verificare.

    Nota

    Il nome utente e la password collegati vengono usati se il cluster ha eseguito l'accesso alla sottoscrizione di Azure e collegato a un cluster.

  1. Dalla barra dei menu passare a Visualizza>riquadro comandi... e immettere Spark/Hive: Collega un cluster.

  2. Selezionare il tipo di cluster collegatoGeneric Livy Endpoint (Endpoint Livy generico).

  3. Immettere l'endpoint Livy generico. Ad esempio: http://10.172.41.42:18080.

  4. Selezionare il tipo di autorizzazione Basic (Di base) o None (Nessuna). Se si seleziona Basic:

    1. Immettere il nome utente di Ambari; il valore predefinito è admin.

    2. Immettere la password di Ambari.

  5. Esaminare la visualizzazione OUTPUT per verificare.

Elencare i cluster

  1. Dalla barra dei menu passare a Visualizza>riquadro comandi... e immettere Spark/Hive: Elenca cluster.

  2. Selezionare la sottoscrizione desiderata.

  3. Esaminare la visualizzazione OUTPUT. Questa visualizzazione mostra il cluster collegato (o i cluster) e tutti i cluster nella sottoscrizione di Azure:

    Set a default cluster configuration.

Impostare il cluster predefinito

  1. Riaprire la cartella HDexample illustrata in precedenza, se chiusa.

  2. Selezionare il file HelloWorld.hql creato in precedenza. Viene aperto nell'editor di script.

  3. Fare clic con il pulsante destro del mouse sull'editor di script e quindi scegliere Spark/Hive: Imposta cluster predefinito.

  4. Connessione all'account Azure o collegare un cluster se non è ancora stato fatto.

  5. Selezionare un cluster come predefinito per il file di script corrente. Gli strumenti aggiornano automaticamente il file di configurazione .VSCode\settings.json:

    Set default cluster configuration.

Inviare query Hive interattive e script batch Hive

Con Spark & Hive Tools per Visual Studio Code, è possibile inviare query Hive interattive e script batch Hive ai cluster.

  1. Riaprire la cartella HDexample illustrata in precedenza, se chiusa.

  2. Selezionare il file HelloWorld.hql creato in precedenza. Viene aperto nell'editor di script.

  3. Copiare e incollare il codice seguente nel file Hive e quindi salvarlo:

    SELECT * FROM hivesampletable;
    
  4. Connessione all'account Azure o collegare un cluster se non è ancora stato fatto.

  5. Fare clic con il pulsante destro del mouse sull'editor di script e scegliere Hive: Interactive per inviare la query oppure usare i tasti di scelta rapida CTRL+ALT+I. Selezionare Hive: Batch per inviare lo script oppure usare i tasti di scelta rapida CTRL+ALT+H.

  6. Se non è stato specificato un cluster predefinito, selezionare un cluster. Gli strumenti consentono anche di inviare un blocco di codice anziché l'intero file di script usando il menu di scelta rapida. Dopo alcuni istanti, i risultati della query vengono visualizzati in una nuova scheda:

    Interactive Apache Hive query result.

    • Pannello RISULTATI : è possibile salvare l'intero risultato come file CSV, JSON o Excel in un percorso locale o semplicemente selezionare più righe.

    • Pannello MESSAGGI: quando si seleziona un numero di riga, si passa alla prima riga dello script in esecuzione.

Inviare query PySpark interattive

Prerequisito per Pyspark interattivo

Si noti che jupyter Extension version (ms-jupyter): v2022.1.1001614873 e Python Extension version (ms-python): v2021.12.1559732655, Python 3.6.x e 3.7.x sono necessari per le query PySpark interattive di HDInsight.

Gli utenti possono eseguire PySpark interattivo nei modi seguenti.

Uso del comando interattivo PySpark nel file PY

Per usare il comando interattivo di PySpark per inviare le query, seguire questa procedura:

  1. Riaprire la cartella HDexample illustrata in precedenza, se chiusa.

  2. Creare un nuovo file HelloWorld.py seguendo la procedura illustrata in precedenza.

  3. Copiare e incollare il codice seguente nel file di script:

    from operator import add
    from pyspark.sql import SparkSession 
    spark = SparkSession.builder \ 
          .appName('hdisample') \ 
          .getOrCreate() 
    lines = spark.read.text("/HdiSamples/HdiSamples/FoodInspectionData/README").rdd.map(lambda r: r[0])
    counters = lines.flatMap(lambda x: x.split(' ')) \
                 .map(lambda x: (x, 1)) \
                 .reduceByKey(add)
    
    coll = counters.collect()
    sortedCollection = sorted(coll, key = lambda r: r[1], reverse = True)
    
    for i in range(0, 5):
         print(sortedCollection[i])
    
  4. Nell'angolo in basso a destra della finestra viene visualizzata la richiesta di installare i kernel PySpark/SynapsePyspark. È possibile fare clic sul pulsante Installa per procedere alle installazioni di PySpark/SynapsePyspark oppure sul pulsante Ignora per ignorare questo passaggio.

    Screenshot shows an option to skip the PySpark installation.

  5. Se è necessario installarlo in un secondo momento, è possibile passare a Preferenza> file>Impostazioni, quindi deselezionare HDInsight: Enable Skip Pyspark Installation (Ignora installazione pyspark) nelle impostazioni.

    Screenshot shows the option to Enable Skip Pyspark Installation.

  6. Se l'installazione ha esito positivo nel passaggio 4, la finestra di messaggio "PySpark installato correttamente" viene visualizzata nell'angolo inferiore destro della finestra. Fare clic sul pulsante Ricarica per ricaricare la finestra.

    pyspark installed successfully.

  7. Dalla barra dei menu passare a Visualizza riquadro comandi... oppure usare i tasti di scelta rapida MAIUSC+CTRL+P e immettere Python: Seleziona interprete per avviare Jupyter Server.From the menu bar, navigate to View>Command Palette... or use the SHIFT+ CTRL+ P keyboard shortcut, and enter Python: Select Interpreter to start Jupyter Server.

    select interpreter to start jupyter server.

  8. Selezionare l'opzione Python seguente.

    choose the below option.

  9. Dalla barra dei menu passare a Visualizza>riquadro comandi... oppure usare i tasti di scelta rapida MAIUSC +CTRL+P e immettere Developer: Reload Window (Sviluppatore: Ricarica finestra).

    reload window.

  10. Connessione all'account Azure o collegare un cluster se non è ancora stato fatto.

  11. Selezionare tutto il codice, fare clic con il pulsante destro del mouse sull'editor di script e selezionare Spark: PySpark Interactive/Synapse: Pyspark Interactive per inviare la query.

    pyspark interactive context menu.

  12. Selezionare il cluster, se non è stato specificato un cluster predefinito. Dopo alcuni istanti, i risultati interattivi di Python vengono visualizzati in una nuova scheda. Fare clic su PySpark per passare il kernel a PySpark/Synapse Pyspark e il codice verrà eseguito correttamente. Se si vuole passare al kernel Pyspark di Synapse, è consigliabile disabilitare le impostazioni automatica in portale di Azure. In caso contrario, potrebbe essere necessario molto tempo per riattivare il cluster e impostare il kernel Synapse per il primo utilizzo. Se gli strumenti consentono anche di inviare un blocco di codice anziché l'intero file di script usando il menu di scelta rapida:

    pyspark interactive python interactive window.

  13. Immettere %%info, quindi premere MAIUSC+INVIO per visualizzare le informazioni sul processo (facoltativo):

    pyspark interactive view job information.

Lo strumento supporta anche la query Spark SQL :

pyspark interactive view result.

Eseguire query interattive in un file PY usando un commento #%%

  1. Aggiungere #%% prima del codice Py per ottenere l'esperienza del notebook.

    add #%%.

  2. Fare clic su Esegui cella. Dopo alcuni istanti, i risultati interattivi di Python vengono visualizzati in una nuova scheda. Fare clic su PySpark per passare il kernel a PySpark/Synapse PySpark, quindi fare di nuovo clic su Esegui cella e il codice verrà eseguito correttamente.

    run cell results.

Sfruttare il supporto per IPYNB dell'estensione Python

  1. È possibile creare un notebook di Jupyter in base a comando dal riquadro comandi oppure creando un nuovo file con estensione ipynb nell'area di lavoro. Per altre informazioni, vedere Uso di notebook di Jupyter in Visual Studio Code

  2. Fare clic sul pulsante Esegui cella, seguire le istruzioni per impostare il pool di Spark predefinito (è consigliabile impostare il cluster/pool predefinito ogni volta prima di aprire un notebook) quindi scegliere Ricarica per ricaricare la finestra.

    set the default spark pool and reload.

  3. Fare clic su PySpark per passare dal kernel a PySpark/Synapse Pyspark e quindi fare clic su Esegui cella, dopo un po' di tempo, verrà visualizzato il risultato.

    run ipynb results.

Nota

Per l'errore di installazione di Synapse PySpark, poiché la relativa dipendenza non verrà più gestita da altri team, non verrà più gestita. Se si prova a usare Synapse Pyspark interattivo, passare all'uso di Azure Synapse Analytics . Ed è un cambiamento a lungo termine.

Inviare il processo batch PySpark

  1. Riaprire la cartella HDexample illustrata in precedenza, se chiusa.

  2. Creare un nuovo file BatchFile.py seguendo la procedura descritta in precedenza.

  3. Copiare e incollare il codice seguente nel file di script:

    from __future__ import print_function
    import sys
    from operator import add
    from pyspark.sql import SparkSession
    if __name__ == "__main__":
        spark = SparkSession\
            .builder\
            .appName("PythonWordCount")\
            .getOrCreate()
    
        lines = spark.read.text('/HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv').rdd.map(lambda r: r[0])
        counts = lines.flatMap(lambda x: x.split(' '))\
                   .map(lambda x: (x, 1))\
                    .reduceByKey(add)
        output = counts.collect()
        for (word, count) in output:
            print("%s: %i" % (word, count))
        spark.stop()
    
  4. Connessione all'account Azure o collegare un cluster se non è ancora stato fatto.

  5. Fare clic con il pulsante destro del mouse sull'editor di script e quindi scegliere Spark: PySpark Batch o Synapse: PySpark Batch*.

  6. Selezionare un pool di cluster/spark per inviare il processo PySpark a:

    Submit Python job result output.

Dopo aver inviato un processo Python, i log di invio vengono visualizzati nella finestra OUTPUT in Visual Studio Code. Vengono visualizzati anche l'URL dell'interfaccia utente spark e l'URL dell'interfaccia utente yarn. Se si invia il processo batch a un pool di Apache Spark, vengono visualizzati anche l'URL dell'interfaccia utente della cronologia Spark e l'URL dell'interfaccia utente dell'applicazione processo Spark. È possibile aprire l'URL in un Web browser per tenere traccia dello stato del processo.

Eseguire l'integrazione con broker di identità di HDInsight

Connessione al cluster HDInsight ESP con ID Broker (HIB)

È possibile seguire la procedura normale per accedere alla sottoscrizione di Azure per connettersi al cluster ESP HDInsight con ID Broker (HIB). Dopo l'accesso, verrà visualizzato l'elenco dei cluster in Azure Explorer. Per altre istruzioni, vedere Connettersi al cluster HDInsight.

Eseguire un processo Hive/PySpark in un cluster ESP HDInsight con ID Broker (HIB)

Per eseguire un processo Hive, è possibile seguire la procedura normale per inviare il processo al cluster ESP HDInsight con ID Broker (HIB). Per altre istruzioni, vedere Inviare query Hive interattive e script batch Hive.

Per eseguire un processo PySpark interattivo, è possibile seguire la procedura normale per inviare il processo al cluster ESP HDInsight con ID Broker (HIB). Vedere Inviare query PySpark interattive.

Per eseguire un processo batch PySpark, è possibile seguire la procedura normale per inviare il processo al cluster HDInsight ESP con ID Broker (HIB). Per altre istruzioni, vedere Inviare il processo batch PySpark.

Configurazione di Apache Livy

La configurazione di Apache Livy è supportata. È possibile configurarlo in . File VSCode\settings.json nella cartella dell'area di lavoro. Attualmente, la configurazione di Livy supporta solo script Python. Per altre informazioni, vedere Livy README.

Come attivare la configurazione di Livy

Metodo 1

  1. Dalla barra dei menu passare a File>Preferenze>Impostazioni.
  2. Nella casella Impostazioni di ricerca immettere Invio processo HDInsight: Livy Conf.
  3. Selezionare Edit in settings.json (Modifica in settings.json) per il risultato della ricerca pertinente.

Metodo 2

Inviare un file e notare che la .vscode cartella viene aggiunta automaticamente alla cartella di lavoro. È possibile visualizzare la configurazione di Livy selezionando .vscode\settings.json.

  • Impostazioni del progetto:

    HDInsight Apache Livy configuration.

    Nota

    Per le impostazioni driverMemory ed executorMemory , impostare il valore e l'unità. Ad esempio: 1g o 1024m.

  • Configurazioni livy supportate:

    POST /batches

    Testo della richiesta

    name description type
    file File contenente l'applicazione da eseguire Percorso (obbligatorio)
    proxyUser Utente da rappresentare quando si esegue il processo String
    className Classe principale Java/Spark dell'applicazione String
    args Argomenti della riga di comando per l'applicazione Elenco di stringhe
    jars Jar da usare in questa sessione Elenco di stringhe
    pyFiles File Python da usare in questa sessione Elenco di stringhe
    files File da usare in questa sessione Elenco di stringhe
    driverMemory Quantità di memoria da usare per il processo del driver String
    driverCores Numero di core da usare per il processo del driver Int
    executorMemory Quantità di memoria da usare per un processo executor String
    executorCores Numero di core da usare per ogni executor Int
    numExecutors Numero di executor da avviare per questa sessione Int
    archives Archivi da usare in questa sessione Elenco di stringhe
    queue Nome della coda YARN a cui inviare String
    name Nome della sessione String
    conf Proprietà di configurazione Spark Mappa di chiave=valore

    Corpo della risposta L'oggetto Batch creato.

    name description type
    ID ID sessione Int
    appId ID applicazione di questa sessione String
    appInfo Informazioni dettagliate sull'applicazione Mappa di chiave=valore
    log Righe di log Elenco di stringhe
    state Stato batch String

    Nota

    La configurazione livy assegnata viene visualizzata nel riquadro di output quando si invia lo script.

Eseguire l'integrazione con Azure HDInsight da Explorer

È possibile visualizzare in anteprima la tabella Hive nei cluster direttamente tramite Azure HDInsight Explorer:

  1. Connettersi all'account Azure, se ancora non è stato fatto.

  2. Selezionare l'icona di Azure nella colonna all'estrema sinistra.

  3. Nel riquadro sinistro espandere AZURE: HDINSIGHT. Sono elencate le sottoscrizioni e i cluster disponibili.

  4. Espandere il cluster per visualizzare il database dei metadati Hive e lo schema della tabella.

  5. Fare clic con il pulsante destro del mouse sulla tabella Hive. Ad esempio: hivesampletable. Seleziona Anteprima.

    Spark & Hive for Visual Studio Code preview hive table.

  6. Verrà visualizzata la finestra Anteprima risultati :

    Spark & Hive for Visual Studio Code preview results window.

  • Pannello RISULTATI

    È possibile salvare l'intero risultato come file CSV, JSON o Excel in un percorso locale oppure selezionare solo più righe.

  • Pannello MESSAGES

    1. Quando il numero di righe nella tabella è maggiore di 100, viene visualizzato il messaggio seguente: "Le prime 100 righe vengono visualizzate per la tabella Hive".

    2. Quando il numero di righe nella tabella è minore o uguale a 100, viene visualizzato il messaggio seguente: "60 righe vengono visualizzate per la tabella Hive".

    3. Quando nella tabella non è presente alcun contenuto, viene visualizzato il messaggio seguente: "0 rows are displayed for Hive table."

      Nota

      In Linux installare xclip per abilitare i dati della tabella di copia.

      Spark & Hive for Visual Studio code in Linux.

Funzionalità aggiuntive

Spark & Hive per Visual Studio Code supporta anche le funzionalità seguenti:

  • Completamento automatico di IntelliSense. Vengono visualizzati suggerimenti per parole chiave, metodi, variabili e altri elementi di programmazione. Icone diverse rappresentano vari tipi di oggetti:

    Spark & Hive Tools for Visual Studio Code IntelliSense objects.

  • Marcatori di errore di IntelliSense. Il servizio di linguaggio sottolinea gli errori di modifica nello script Hive.

  • Evidenziazioni della sintassi. Il servizio di linguaggio usa colori diversi per distinguere variabili, parole chiave, tipo di dati, funzioni e altri elementi di programmazione:

    Spark & Hive Tools for Visual Studio Code syntax highlights.

Ruolo di sola lettura

Gli utenti a cui è assegnato il ruolo di sola lettura per il cluster non possono inviare processi al cluster HDInsight, né visualizzare il database Hive. Contattare l'amministratore del cluster per aggiornare il ruolo all'operatore cluster HDInsight nel portale di Azure. Se si dispone di credenziali Ambari valide, è possibile collegare manualmente il cluster usando le indicazioni seguenti.

Esplorare il cluster HDInsight

Quando si seleziona Azure HDInsight Explorer per espandere un cluster HDInsight, viene richiesto di collegare il cluster se si ha il ruolo di sola lettura per il cluster. Usare il metodo seguente per collegarsi al cluster usando le credenziali di Ambari.

Inviare il processo al cluster HDInsight

Quando si invia un processo a un cluster HDInsight, viene richiesto di collegare il cluster se si è nel ruolo di sola lettura per il cluster. Usare la procedura seguente per collegarsi al cluster usando le credenziali di Ambari.

  1. Immettere un nome utente Ambari valido.

  2. Immettere una password valida.

    Spark & Hive Tools for Visual Studio Code Username.

    Spark & Hive Tools for Visual Studio Code Password.

    Nota

    È possibile usare Spark / Hive: List Cluster per controllare il cluster collegato:

    Spark & Hive Tools for Visual Studio Code Reader Linked.

Azure Data Lake Storage Gen2

Esplorare un account Data Lake Archiviazione Gen2

Selezionare Azure HDInsight Explorer per espandere un account Data Lake Archiviazione Gen2. Viene richiesto di immettere la chiave di accesso alle risorse di archiviazione se l'account Azure non ha accesso all'archiviazione gen2. Dopo la convalida della chiave di accesso, l'account Data Lake Archiviazione Gen2 viene espanso automaticamente.

Inviare processi a un cluster HDInsight con Data Lake Archiviazione Gen2

Inviare un processo a un cluster HDInsight usando Data Lake Archiviazione Gen2. Viene richiesto di immettere la chiave di accesso alle risorse di archiviazione se l'account Azure non ha accesso in scrittura all'archiviazione Gen2. Dopo la convalida della chiave di accesso, il processo verrà inviato correttamente.

Spark & Hive Tools for Visual Studio Code AccessKey.

Nota

È possibile ottenere la chiave di accesso per l'account di archiviazione dal portale di Azure. Per altre informazioni, vedere Gestire le chiavi di accesso dell'account di archiviazione.

  1. Dalla barra dei menu passare a Visualizza>riquadro comandi e quindi immettere Spark/Hive: Scollega un cluster.

  2. Selezionare un cluster da scollegare.

  3. Vedere la visualizzazione OUTPUT per la verifica.

Disconnettersi

Dalla barra dei menu passare a Visualizza>riquadro comandi e quindi immettere Azure: Disconnetti.

Problemi noti

Errore di installazione di PySpark di Synapse.

Per l'errore di installazione di Synapse PySpark, poiché la relativa dipendenza non verrà più mantenuta da altri team, non verrà più gestita. Se si prova a usare Synapse Pyspark interactive, usare invece Azure Synapse Analytics . Ed è un cambiamento a lungo termine.

synapse pyspark installation error.

Passaggi successivi

Per un video che illustra l'uso di Spark & Hive per Visual Studio Code, vedere Spark & Hive per Visual Studio Code.