Inviare processi Spark nel cluster Big Data di SQL Server in Visual Studio Code

Informazioni su come usare Spark & Hive Tools per Visual Studio Code per creare e inviare script PySpark per Apache Spark. Verrà prima di tutto descritto come installare gli strumenti Spark e Hive in Visual Studio Code e quindi verrà illustrato come inviare i processi a Spark.

È possibile installare Spark & Hive Tools nelle piattaforme supportate da Visual Studio Code, tra cui Windows, Linux e macOS. Di seguito sono illustrati i prerequisiti per le diverse piattaforme.

Prerequisiti

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

Installare Spark & Hive Tools

Dopo aver completato i prerequisiti, è possibile installare Spark & Hive Tools per Visual Studio Code. Per installare Spark & Hive Tools, eseguire 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, pubblicato da Microsoft, nei risultati della ricerca e quindi selezionare Installa.

    Installare l'estensione

  5. Ricaricare quando necessario.

Aprire la cartella di lavoro

Completare la procedura seguente per aprire una cartella di lavoro e creare un file in Visual Studio Code:

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

  2. Dalla visualizzazione Explorer selezionare la cartella, SQLBDCexample e quindi l'icona Nuovo file accanto alla cartella di lavoro.

    Nuovo file

  3. Assegnare al nuovo file l'estensione .py (script Spark). Questo esempio usa HelloWorld.py.

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

    import sys
    from operator import add
    from pyspark.sql import SparkSession, Row
    
    spark = SparkSession\
       .builder\
       .appName("PythonWordCount")\
       .getOrCreate()
    
    data = [Row(col1='pyspark and spark', col2=1), Row(col1='pyspark', col2=2), Row(col1='spark vs hadoop', col2=2), Row(col1='spark', col2=2), Row(col1='hadoop', col2=2)]
    df = spark.createDataFrame(data)
    lines = df.rdd.map(lambda r: r[0])
    
    counters = lines.flatMap(lambda x: x.split(' ')) \
       .map(lambda x: (x, 1)) \
       .reduceByKey(add)
    
    output = counters.collect()
    sortedCollection = sorted(output, key = lambda r: r[1], reverse = True)
    
    for (word, count) in sortedCollection:
       print("%s: %i" % (word, count))
    

Prima di poter inviare script ai cluster da Visual Studio Code, è necessario collegare un cluster Big Data di SQL Server.

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

    Comando per il collegamento del cluster

  2. Selezionare il tipo di cluster collegato SQL Server Big Data (Big Data di SQL Server).

  3. Immettere l'endpoint dei Big Data di SQL Server.

  4. Immettere SQL Server nome utente del cluster Big Data.

  5. Immettere la password per l'amministratore utenti.

  6. Impostare il nome visualizzato del cluster Big Data (facoltativo).

  7. Elencare i cluster ed esaminare la visualizzazione OUTPUT per verificare.

Elencare i cluster

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

  2. Esaminare la visualizzazione OUTPUT. La visualizzazione mostrerà i cluster collegati.

    Impostare una configurazione del cluster predefinito

Impostare il cluster predefinito

  1. Re-Open la cartella SQLBDCexample creata in precedenza se chiusa.

  2. Selezionare il file HelloWorld.py creato in precedenza. Il file verrà aperto nell'editor di script.

  3. Collegare un cluster, se non è ancora stato fatto.

  4. Fare clic con il pulsante destro del mouse sull'editor di script e scegliere Spark/Hive: Set Default Cluster (Spark/Hive: Imposta cluster predefinito).

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

    Impostare la configurazione del cluster predefinito

Inviare query PySpark interattive

È possibile inviare query PySpark interattive seguendo questa procedura:

  1. Aprire di nuovo la cartella SQLBDCexample creata in precedenza, se è stata chiusa.

  2. Selezionare il file HelloWorld.py creato in precedenza. Il file verrà aperto nell'editor di script.

  3. Collegare un cluster, se non è ancora stato fatto.

  4. Scegliere tutto il codice e fare clic con il pulsante destro del mouse sull'editor di script, scegliere Spark: PySpark Interactive per inviare la query o usare i tasti di scelta rapida CTRL+ALT+I.

    Menu di scelta rapida PySpark Interactive (PySpark interattivo)

  5. Selezionare il cluster se non è stato specificato un cluster predefinito. Dopo alcuni istanti, i risultati di Python Interactive vengono visualizzati in una nuova scheda. Gli strumenti consentono anche di inviare un blocco di codice anziché l'intero file di script usando il menu di scelta rapida.

    Finestra di Python interattivo per PySpark interattivo

  6. Immettere "%%info" e quindi premere MAIUSC+INVIO per visualizzare le informazioni sul processo. Facoltativa

    Visualizzare le informazioni sul processo

    Nota

    Quando l'opzione Python Extension Enabled (Estensione Python abilitata) è deselezionata nelle impostazioni (per impostazione predefinita è selezionata), i risultati dell'interazione PySpark inviata useranno la finestra precedente.

    Estensione Python per PySpark interattivo disabilitata

Inviare il processo batch PySpark

  1. Aprire di nuovo la cartella SQLBDCexample creata in precedenza, se è stata chiusa.

  2. Selezionare il file HelloWorld.py creato in precedenza. Il file verrà aperto nell'editor di script.

  3. Collegare un cluster, se non è ancora stato fatto.

  4. Fare clic con il pulsante destro del mouse sull'editor di script e quindi scegliere Spark: PySpark Batch oppure usare la combinazione di tasti CTRL+ALT+H.

  5. Selezionare il cluster se non è stato specificato un cluster predefinito. Dopo aver inviato un processo Python, i log di invio vengono visualizzati nella finestra OUTPUT in Visual Studio Code. Vengono visualizzati anche i valori di Spark UI URL (URL UI Spark) e Yarn UI URL (URL UI Yarn). È possibile aprire l'URL in un Web browser per tenere traccia dello stato del processo.

    Risultato dell'invio del processo Python

Configurazione di Apache Livy

La configurazione di Apache Livy è supportata e può essere impostata in .VSCode\settings.json nella cartella dell'area di lavoro. Attualmente, la configurazione di Livy supporta solo script Python. Per altre informazioni, vedere il file README di Livy.

Come attivare la configurazione di Livy

Metodo 1

  1. Dalla barra dei menu passare a Preferenze file > > Impostazioni.
  2. Nella casella di testo Search settings (Impostazioni di ricerca) immettere HDInsight Job Submission: Livy Conf (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 osservare che la cartella .vscode viene aggiunta automaticamente alla cartella di lavoro. È possibile trovare la configurazione di Livy selezionando settings.json in .vscode .

Impostazioni del progetto:

Configurazione di Livy

Nota

Per le impostazioni driverMemory ed executorMemory, impostare il valore con unità, ad esempio 1 gb o 1024 mb.

Configurazioni di Livy supportate

POST/batch

Testo della richiesta

name description tipo
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 File 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
coda Nome della coda YARN dove è stato eseguito l'invio string
name Nome della sessione string
conf Proprietà di configurazione Spark Mappa di chiave=valore
:- :- :-

Corpo della risposta

Oggetto batch creato.

name description tipo
id ID della sessione int
appId ID applicazione della sessione Stringa
appInfo Informazioni dettagliate sull'applicazione Mappa di chiave=valore
log Righe di log Elenco di stringhe
state Stato del batch string
:- :- :-

Nota

La configurazione di Livy assegnata verrà visualizzata nel riquadro di output quando si invia lo script.

Funzionalità aggiuntive

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

  • Completamento automatico intelliSense. Vengono visualizzati suggerimenti per parola chiave, metodi, variabili e altro ancora. Le diverse icone rappresentano tipi diversi di oggetti.

    Tipi di oggetti IntelliSense in Spark & Hive Tools per Visual Studio Code

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

  • La sintassi evidenzia. Il servizio di linguaggio usa colori diversi per distinguere variabili, parole chiave, tipo di dati, funzioni e altro ancora.

    Evidenziazioni della sintassi in Spark & Hive Tools per Visual Studio Code

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

  2. Selezionare il cluster da scollegare.

  3. Esaminare la visualizzazione OUTPUT per verificare.

Passaggi successivi

Per altre informazioni su SQL Server cluster Big Data e sugli scenari correlati, vedere Cluster Big Data di SQL Server .