Avvio rapido: Creare un pool di Apache Spark serverless in Azure Synapse Analytics con gli strumenti Web

Questa guida di avvio rapido illustra come creare un pool di Apache Spark serverless in Azure Synapse usando strumenti Web. Verrà quindi illustrato come connettersi al pool di Apache Spark ed eseguire query Spark SQL su file e tabelle. Apache Spark consente cluster computing e analisi dei dati veloci grazie all'elaborazione in memoria. Per informazioni su Spark in Azure Synapse, vedere Panoramica: Apache Spark in Azure Synapse.

Importante

La fatturazione delle istanze di Spark viene calcolata con ripartizione proporzionale al minuto, indipendentemente dal fatto che siano in uso o meno. Assicurarsi di arrestare l'istanza di Spark dopo averla usata oppure impostare un timeout breve. Per altre informazioni, vedere la sezione Pulire le risorse di questo articolo.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Prerequisiti

Accedere al portale di Azure

Accedere al portale di Azure.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Creare un notebook

Un notebook è un ambiente interattivo che supporta diversi linguaggi di programmazione. Il notebook consente di interagire con i dati, combinare codice con markdown e testo ed eseguire visualizzazioni semplici.

  1. Nella visualizzazione del portale di Azure relativa all'area di lavoro di Azure Synapse che si vuole usare selezionare Avvia Synapse Studio.

  2. Dopo l'avvio di Synapse Studio, selezionare Sviluppo. Quindi, selezionare l'icona " + " per aggiungere una nuova risorsa.

  3. Selezionare Notebook. Viene creato, e quindi aperto, un nuovo notebook con un nome generato automaticamente.

    Nuovo notebook Nuovo notebook

  4. Nella finestra Proprietà specificare un nome per il notebook.

  5. Fare clic su Pubblica sulla barra degli strumenti.

  6. Se nell'area di lavoro è presente un solo pool di Apache Spark, viene selezionato per impostazione predefinita. Se non è selezionato alcun pool, usare l'elenco a discesa per selezionare il pool di Apache Spark corretto.

  7. Fare clic su Aggiungi codice. Il linguaggio predefinito è Pyspark. Si userà una combinazione di Pyspark e Spark SQL, quindi l'impostazione predefinita è adeguata. Altri linguaggi supportati sono Scala e .NET per Spark.

  8. Creare quindi un semplice oggetto DataFrame Spark da modificare. In questo caso lo si crea dal codice. Sono presenti tre righe e tre colonne:

    new_rows = [('CA',22, 45000),("WA",35,65000) ,("WA",50,85000)]
    demo_df = spark.createDataFrame(new_rows, ['state', 'age', 'salary'])
    demo_df.show()
    
  9. Eseguire la cella usando uno dei metodi seguenti:

    • Premere MAIUSC + INVIO.

    • Selezionare l'icona di riproduzione blu a sinistra della cella.

    • Selezionare il pulsante Run all (Esegui tutto) sulla barra degli strumenti.

      Creare l'oggetto DataFrame

  10. Se l'istanza del pool di Apache Spark non è già in esecuzione, viene avviata automaticamente. È possibile visualizzare lo stato dell'istanza del pool di Apache Spark sotto la cella in esecuzione e anche nel pannello di stato nella parte inferiore del notebook. A seconda delle dimensioni del pool, l'avvio dovrebbe richiedere dai 2 ai 5 minuti. Al termine dell'esecuzione del codice, sotto la cella vengono visualizzate le informazioni sul tempo impiegato per l'esecuzione e sull'esecuzione stessa. Nella cella di output viene visualizzato l'output.

    Output dell'esecuzione di una cella

  11. I dati sono ora disponibili in un oggetto DataFrame dove possono essere usati in molti modi diversi. Saranno necessari in formati diversi per la parte restante di questa guida di avvio rapido.

  12. Immettere il codice seguente in un'altra cella ed eseguirlo. Verranno creati una tabella Spark, un file CSV e un file Parquet, tutti con copie dei dati:

     demo_df.createOrReplaceTempView('demo_df')
     demo_df.write.csv('demo_df', mode='overwrite')
     demo_df.write.parquet('abfss://<<TheNameOfAStorageAccountFileSystem>>@<<TheNameOfAStorageAccount>>.dfs.core.windows.net/demodata/demo_df', mode='overwrite')
    

    Se si usa lo strumento di esplorazione dell'archiviazione, è possibile vedere l'effetto delle due diverse modalità di scrittura di un file usate in precedenza. Quando non viene specificato un file system viene usato quello predefinito, in questo caso default>user>trusted-service-user>demo_df. I dati vengono salvati nel percorso del file system specificato.

    Si noti che nelle operazioni di scrittura nei formati "csv" e "parquet" viene creata una directory con molti file partizionati.

    Visualizzazione di Storage Explorer della visualizzazione di Storage

    Screenshot che evidenzia il percorso di demo_df demodata > predefinito>.

Eseguire le istruzioni Spark SQL

SQL (Structured Query Language) è il linguaggio più diffuso e più usato per l'esecuzione di query e la definizione dei dati. Spark SQL funziona come estensione di Apache Spark per l'elaborazione dei dati strutturati, usando la nota sintassi SQL.

  1. Incollare il codice seguente in una cella vuota e quindi eseguirlo. Il comando elenca le tabelle nel pool.

    %%sql
    SHOW TABLES
    

    Quando si usa un notebook con il pool di Apache Spark di Azure Synapse, si ottiene un set di impostazioni sqlContext che può essere usato per eseguire query con Spark SQL. %%sql indica al notebook di usare l'elemento sqlContext preimpostato per eseguire la query. La query recupera le prime 10 righe da una tabella di sistema fornita con tutti i pool di Apache Spark di Azure Synapse per impostazione predefinita.

  2. Eseguire un'altra query per visualizzare i dati in demo_df.

    %%sql
    SELECT * FROM demo_df
    

    Il codice produce due celle di output, una che contiene i risultati dei dati e l'altra che mostra la vista processi.

    Per impostazione predefinita, la visualizzazione dei risultati mostra una griglia, ma sotto la griglia è presente un gruppo di opzioni che consente di passare dalla visualizzazione griglia alla visualizzazione grafico e viceversa.

    Output delle query nell'output della query Spark Azure Synapse

  3. Nella selezione Visualizzazione selezionare Grafico.

  4. Selezionare l'icona Opzioni di visualizzazione all'estrema destra.

  5. Nel campo Tipo di grafico selezionare "grafico a barre".

  6. Nel campo Colonna asse X selezionare "state".

  7. Nel campo Colonna asse Y selezionare "salary".

  8. Nel campo Aggregazione selezionare "AVG".

  9. Selezionare Applica.

    Output del grafico in Azure Synapse

  10. È possibile ottenere la stessa esperienza di esecuzione di SQL senza cambiare linguaggio. Basta sostituire la cella SQL riportata sopra con questa cella PySpark. L'esperienza di output è la stessa perché viene usato il comando display:

    display(spark.sql('SELECT * FROM demo_df'))
    
  11. Ognuna delle celle eseguite in precedenza conteneva i collegamenti per passare al server cronologia e a Monitoraggio. Facendo clic sui collegamenti si accede a parti diverse dell'esperienza utente.

Nota

Parte della documentazione ufficiale di Apache Spark si basa sull'uso della console Spark, che non è disponibile in Synapse Spark. Usare al suo posto un notebook o IntelliJ.

Pulire le risorse

Azure Synapse salva i dati in Azure Data Lake Storage. È possibile lasciare che un'istanza di Spark venga arrestata in tutta sicurezza quando non è in uso. Un pool di Apache Spark serverless viene addebitato per tutto il tempo in cui è in esecuzione, anche se non viene usato.

Poiché i costi per il pool sono decisamente superiori a quelli per l'archiviazione, dal punto di vista economico è opportuno arrestare le istanze di Spark quando non vengono usate.

Per assicurarsi che l'istanza di Spark venga arrestata, terminare tutte le sessioni connesse (notebook). Il pool si arresta quando viene raggiunto il tempo di inattività specificato nel pool di Apache Spark. Si può anche selezionare Termina sessione sulla barra di stato nella parte inferiore del notebook.

Passaggi successivi

In questa guida di avvio rapido si è appreso come creare un pool di Apache Spark serverless ed eseguire una query Spark SQL di base.