Utilizzare l'estensione JupyterLab per sviluppare carichi di lavoro Spark serverless

Questo documento descrive come installare e utilizzare l'estensione JupyterLab su una macchina o una VM autogestita con accesso ai servizi Google. Inoltre, descrive come sviluppare ed eseguire il deployment del codice del notebook Spark serverless.

Installa l'estensione in pochi minuti per usufruire delle seguenti funzionalità:

  • Avvia notebook Spark e BigQuery serverless per sviluppare rapidamente il codice
  • Sfogliare e visualizzare l'anteprima dei set di dati BigQuery in JupyterLab
  • Modificare i file di Cloud Storage in JupyterLab
  • Pianificare un notebook su Composer

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Enable the Dataproc API.

    Enable the API

  4. Install the Google Cloud CLI.

  5. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Enable the Dataproc API.

    Enable the API

  9. Install the Google Cloud CLI.

  10. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Installa l'estensione JupyterLab

    Puoi installare e utilizzare l'estensione JupyterLab su una macchina o una VM con accesso ai servizi Google, ad esempio la tua macchina locale o un'istanza VM Compute Engine.

    Per installare l'estensione:

    1. Scarica e installa Python 3.11 o versioni successive da python.org/downloads.

      • Verifica l'installazione di Python 3.11 o versioni successive.
        python3 --version
        
    2. Virtualizza l'ambiente Python.

      pip3 install pipenv
      

      • Crea una cartella di installazione.
        mkdir jupyter
        
      • Vai alla cartella di installazione.
        cd jupyter
        
      • Crea un ambiente virtuale.
        pipenv shell
        
    3. Installa JupyterLab nell'ambiente virtuale.

      pipenv install jupyterlab
      

    4. Installa l'estensione JupyterLab.

      pipenv install bigquery-jupyter-plugin
      

    5. Avvia JupyterLab.

      jupyter lab
      

      1. La pagina Avvio app di JupyterLab si apre nel browser. Contiene una sezione Job e sessioni Dataproc. Può anche contenere sezioni di notebook Dataproc Serverless e notebook cluster Dataproc se hai accesso a notebook Dataproc Serverless o cluster Dataproc con il componente facoltativo Jupyter in esecuzione nel tuo progetto.

        Pagina del browser del programma di avvio di JupyterLab
      2. Per impostazione predefinita, la sessione interattiva Dataproc Serverless per Spark viene eseguita nel progetto e nella regione impostati quando hai eseguito gcloud init in Prima di iniziare. Puoi modificare le impostazioni del progetto e della regione per le sessioni dalla pagina Impostazioni > Impostazioni Google Dataproc di JupyterLab.

        Per applicare le modifiche, devi riavviare l'estensione.

    Crea un modello di runtime Dataproc Serverless

    I modelli di runtime Dataproc Serverless (chiamati anche modelli di sessione) contengono impostazioni di configurazione per l'esecuzione del codice Spark in una sessione. Puoi creare e gestire i modelli di runtime utilizzando Jupyterlab o gcloud CLI.

    JupyterLab

    1. Fai clic sulla scheda New runtime template nella sezione Blocchi note Dataproc Serverless della pagina Avvio di JupyterLab.

    2. Compila il modulo Modello di runtime.

      • Informazioni sul modello:

        • Nome visualizzato, ID runtime e Descrizione: accetta o compila un nome visualizzato, un ID runtime e una descrizione del modello.
      • Configurazione esecuzione: seleziona Account utente per eseguire i notebook con l'identità utente anziché con l'identità del account di servizio Dataproc.

        • Account di servizio: se non specifichi un account di servizio, viene utilizzato il service account predefinito di Compute Engine.
        • Versione runtime: conferma o seleziona la versione runtime.
        • Immagine del container personalizzato: se vuoi, specifica l'URI di un'immagine del container personalizzato.
        • Repository di pacchetti Python: per impostazione predefinita, i pacchetti Python vengono scaricati e installati dalla cache pull-through PyPI quando gli utenti eseguono i comandi di installazione pip nei loro notebook. Puoi specificare il repository di elementi privati della tua organizzazione per i pacchetti Python da utilizzare come repository di pacchetti Python predefinito.
      • Crittografia: accetta il valore predefinito Google-owned and Google-managed encryption key o seleziona Chiave di crittografia gestita dal cliente (CMEK). Se CMEK, seleziona o fornisci le informazioni sulla chiave.

      • Configurazione di rete: seleziona una subnet nel progetto o condivisa da un progetto host (puoi cambiare il progetto dal menu Impostazioni > Impostazioni Google Dataproc di JupyterLab). Puoi specificare i tag di rete da applicare alla rete specificata. Tieni presente che Dataproc Serverless attiva l'accesso privato Google (PGA) nella subnet specificata. Per i requisiti di connettività di rete, consulta Configurazione di rete di Dataproc Serverless per Spark.

      • Configurazione sessione: facoltativamente, puoi compilare questi campi per limitare la durata delle sessioni create con il modello.

        • Tempo di inattività massimo:il tempo di inattività massimo prima che la sessione venga chiusa. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).
        • Tempo di sessione massimo:la durata massima di una sessione prima che la sessione venga interrotta. Intervallo consentito: da 10 minuti a 336 ore (14 giorni).
      • Metastore: per utilizzare un servizio Dataproc Metastore con le tue sessioni, seleziona l'ID progetto e il servizio del metastore.

      • Server di cronologia permanente: puoi selezionare un server di cronologia Spark permanente disponibile per accedere ai log delle sessioni durante e dopo le sessioni.

      • Proprietà Spark:puoi selezionare e aggiungere le proprietà Allocare risorse, Autoscaling o GPU di Spark. Fai clic su Aggiungi proprietà per aggiungere altre proprietà Spark. Per ulteriori informazioni, consulta Proprietà Spark.

      • Etichette:fai clic su Aggiungi etichetta per ogni etichetta da impostare sulle sessioni create con il modello.

    3. Fai clic su Salva per creare il modello.

    4. Per visualizzare o eliminare un modello di runtime.

      1. Fai clic su Impostazioni > Impostazioni di Google Dataproc.
      2. La sezione Modelli di runtime Dataproc Serverless mostra l'elenco dei modelli di runtime.
        • Fai clic sul nome di un modello per visualizzarne i dettagli.
        • Puoi eliminare un modello dal menu Azione del modello.
    5. Apri e ricarica la pagina Avvio app di JupyterLab per visualizzare la scheda del modello di blocco note salvata nella pagina Avvio app di JupyterLab.

    gcloud

    1. Crea un file YAML con la configurazione del modello di runtime.

      YAML semplice

      environmentConfig:
        executionConfig:
          networkUri: default
      jupyterSession:
        kernel: PYTHON
        displayName: Team A
      labels:
        purpose: testing
      description: Team A Development Environment
      

      YAML complesso

      description: Example session template
      environmentConfig:
        executionConfig:
          serviceAccount: sa1
          # Choose either networkUri or subnetworkUri
          networkUri:
          subnetworkUri: default
          networkTags:
           - tag1
          kmsKey: key1
          idleTtl: 3600s
          ttl: 14400s
          stagingBucket: staging-bucket
        peripheralsConfig:
          metastoreService: projects/my-project-id/locations/us-central1/services/my-metastore-id
          sparkHistoryServerConfig:
            dataprocCluster: projects/my-project-id/regions/us-central1/clusters/my-cluster-id
      jupyterSession:
        kernel: PYTHON
        displayName: Team A
      labels:
        purpose: testing
      runtimeConfig:
        version: "2.3"
        containerImage: gcr.io/my-project-id/my-image:1.0.1
        properties:
          "p1": "v1"
      description: Team A Development Environment
      

    2. Crea un modello di sessione (runtime) dal file YAML eseguendo il seguente comando gcloud beta dataproc session-templates import localmente o in Cloud Shell:

      gcloud beta dataproc session-templates import TEMPLATE_ID \
          --source=YAML_FILE \
          --project=PROJECT_ID \
          --location=REGION
      

    Avviare e gestire i notebook

    Dopo aver installato l'estensione JupyterLab di Dataproc, puoi fare clic sulle schede dei modelli nella pagina Avvio di JupyterLab per:

    Avvia un notebook Jupyter su Dataproc Serverless

    La sezione Notebook Dataproc Serverless nella pagina di avvio di JupyterLab mostra schede dei modelli di notebook che mappano ai modelli di runtime Dataproc Serverless (consulta Creare un modello di runtime Dataproc Serverless).

    1. Fai clic su una scheda per creare una sessione Dataproc Serverless e avviare un notebook. Al termine della creazione della sessione e quando il kernel del notebook è pronto per l'uso, lo stato del kernel cambia da Starting a Idle (Ready).

    2. Scrivi e testa il codice del notebook.

      1. Copia e incolla il seguente codice Pi estimation PySpark nella cella del notebook PySpark, quindi premi Maiusc+Invio per eseguire il codice.

        import random
            
        def inside(p):
            x, y = random.random(), random.random()
            return x*x + y*y < 1
            
        count = sc.parallelize(range(0, 10000)) .filter(inside).count()
        print("Pi is roughly %f" % (4.0 * count / 10000))

        Risultato del notebook:

    3. Dopo aver creato e utilizzato un blocco note, puoi terminare la sessione facendo clic su Arrestare il kernel nella scheda Kernel.

      • Per riutilizzare la sessione, crea un nuovo notebook scegliendo Notebook dal menu File>>Nuovo. Dopo aver creato il nuovo notebook, scegli la sessione esistente dalla finestra di dialogo di selezione del kernel. Il nuovo blocco note riutilizzerà la sessione e manterrà il contesto della sessione del blocco note precedente.
    4. Se non termini la sessione, Dataproc la termina quando scade il timer di inattività della sessione. Puoi configurare il tempo di inattività della sessione nella configurazione del modello di runtime. Il tempo di inattività predefinito della sessione è un'ora.

    Avvia un blocco note su un cluster Dataproc su Compute Engine

    Se hai creato un cluster Jupyter Dataproc su Compute Engine, la pagina Avvio di JupyterLab contiene una sezione Notebook cluster Dataproc con schede del kernel preinstallate.

    Per avviare un notebook Jupyter sul tuo cluster Dataproc su Compute Engine:

    1. Fai clic su una scheda nella sezione Notebook cluster Dataproc.

    2. Quando lo stato del kernel cambia da Starting a Idle (Ready), puoi iniziare a scrivere ed eseguire il codice del notebook.

    3. Dopo aver creato e utilizzato un blocco note, puoi terminare la sessione facendo clic su Arrestare il kernel nella scheda Kernel.

    Gestire i file di input e di output in Cloud Storage

    L'analisi dei dati esplorativi e la creazione di modelli ML spesso implicano input e output basati su file. Dataproc Serverless accede a questi file su Cloud Storage.

    • Per accedere al browser Cloud Storage, fai clic sull'icona del browser Cloud Storage nella barra laterale della pagina Avvio di JupyterLab, quindi fai doppio clic su una cartella per visualizzarne i contenuti.

    • Puoi fare clic sui tipi di file supportati da Jupyter per aprirli e modificarli. Quando salvate le modifiche ai file, queste vengono scritte in Cloud Storage.

    • Per creare una nuova cartella Cloud Storage, fai clic sull'icona della nuova cartella, quindi inserisci il nome della cartella.

    • Per caricare file in un bucket Cloud Storage o in una cartella, fai clic sull'icona di caricamento, quindi seleziona i file da caricare.

    Sviluppare il codice del notebook Spark

    Dopo aver installato l'estensione JupyterLab di Dataproc, puoi avviare i notebook Jupyter dalla pagina Avvio app di JupyterLab per sviluppare il codice dell'applicazione.

    Sviluppo di codice PySpark e Python

    I cluster Dataproc Serverless e Dataproc su Compute Engine supportano i kernel PySpark. Dataproc su Compute Engine supporta anche i kernel Python.

    Sviluppo di codice SQL

    Per aprire un notebook PySpark per scrivere ed eseguire codice SQL, nella pagina JupyterLab Avvio, fai clic sulla scheda del kernel PySpark nella sezione Notebook Dataproc Serverless o Notebook cluster Dataproc.

    Magia Spark SQL: poiché il kernel PySpark che avvia Dataproc Serverless Notebooks è precaricato con la magia Spark SQL, anziché utilizzare spark.sql('SQL STATEMENT').show() per inserire un a capo nell'istruzione SQL, puoi digitare %%sparksql magic nella parte superiore di una cella, quindi digitare l'istruzione SQL nella cella.

    BigQuery SQL: il connettore BigQuery Spark consente al codice del tuo notebook di caricare i dati dalle tabelle BigQuery, eseguire analisi in Spark e poi scrivere i risultati in una tabella BigQuery.

    Dataproc Serverless 2.2 e le versioni successive del runtime includono il connettore BigQuery Spark. Se utilizzi un runtime precedente per avviare i notebook Dataproc Serverless, puoi installare il connettore BigQuery su Spark aggiungendo la seguente proprietà Spark al tuo modello di runtime Dataproc Serverless:

    spark.jars: gs://spark-lib/bigquery/spark-bigquery-with-dependencies_2.12-0.25.2.jar
    

    Sviluppo di codice Scala

    I cluster Dataproc su Compute Engine creati con le versioni delle immagini 2.0 e successive includono Apache Toree, un kernel Scala per la piattaforma Jupyter Notebook che fornisce accesso interattivo a Spark.

    • Fai clic sulla scheda Apache Toree nella sezione Notebook cluster Dataproc nella pagina Avvio app di JupyterLab per aprire un notebook per lo sviluppo di codice Scala.

      Figura 1. Scheda del kernel Apache Toree nella pagina Avvio app di JupyterLab.

    Sviluppare codice con l'estensione Visual Studio Code

    Puoi utilizzare l'estensione Google Cloud Visual Studio Code (VS Code) per:

    • Sviluppare ed eseguire codice Spark nei notebook Dataproc Serverless.
    • Crea e gestisci modelli di runtime (sessione) Dataproc Serverless, sessioni interattive e carichi di lavoro batch.

    L'estensione Visual Studio Code è gratuita, ma ti vengono addebitati i costi di eventuali Google Cloud servizi, tra cui Dataproc, Dataproc Serverless e le risorse Cloud Storage che utilizzi.

    Utilizzare VS Code con BigQuery: puoi anche utilizzare VS Code con BigQuery per svolgere le seguenti operazioni:

    • Sviluppare ed eseguire i notebook BigQuery.
    • Sfoglia, ispeziona e visualizza l'anteprima dei set di dati BigQuery.

    Prima di iniziare

    1. Scarica e installa VS Code.
    2. Apri VS Code e fai clic su Estensioni nella barra delle attività.
    3. Utilizza la barra di ricerca per trovare l'estensione Jupyter e poi fai clic su Installa. L'estensione Jupyter di Microsoft è una dipendenza obbligatoria.

      Un elenco di estensioni Jupyter nella console di VS Code.

    Installa l' Google Cloud estensione

    1. Apri VS Code e fai clic su Estensioni nella barra delle attività.
    2. Utilizza la barra di ricerca per trovare l'estensione Google Cloud Code, quindi fai clic su Installa.

      L&#39;estensione di codice Google Cloud nella console di VS Code.

    3. Se richiesto, riavvia VS Code.

    L'icona Google Cloud Codice è ora visibile nella barra delle attività di VS Code.

    Configurare l'estensione

    1. Apri VS Code e fai clic su Google Cloud Codice nella barra delle attività.
    2. Apri la sezione Dataproc.
    3. Fai clic su Accedi a Google Cloud. Verrà visualizzata la pagina di accesso con le tue credenziali.
    4. Utilizza la barra delle app di primo livello per accedere a Codice > Impostazioni > Impostazioni > Estensioni.
    5. Individua Google Cloud Codice e fai clic sull'icona Gestisci per aprire il menu.
    6. Seleziona Settings (Impostazioni).
    7. Nei campi Project e Dataproc Region, inserisci il nome del Google Cloud progetto e della regione da utilizzare per sviluppare i notebook e gestire le risorse Dataproc Serverless.

    Sviluppare notebook Dataproc Serverless

    1. Apri VS Code e fai clic su Google Cloud Codice nella barra delle attività.
    2. Apri la sezione Notebook e poi fai clic su Nuovo notebook Spark serverless.
    3. Seleziona o crea un nuovo modello di runtime (sessione) da utilizzare per la sessione del notebook.
    4. Nell'editor viene creato e aperto un nuovo file .ipynb contenente codice campione.

      Nuovo notebook Spark serverless nella console di VS Code.

      Ora puoi scrivere ed eseguire codice nel tuo notebook Dataproc Serverless.

    Crea e gestisci le risorse Dataproc Serverless

    1. Apri VS Code e fai clic su Google Cloud Codice nella barra delle attività.
    2. Apri la sezione Dataproc, quindi fai clic sui seguenti nomi di risorse:

      • Cluster: crea e gestisci cluster e job.
      • Serverless: crea e gestisci sessioni interattive e carichi di lavoro batch.
      • Modelli di runtime Spark: crea e gestisci i modelli di sessione.

      Risorse Dataproc elencate nella console di VS Code.

    Esplora set di dati

    Utilizza l'esploratore dei set di dati di JupyterLab per visualizzare i set di dati del metastore BigLake.

    Per aprire JupyterLab Dataset Explorer, fai clic sull'icona nella barra laterale.

    Puoi cercare un database, una tabella o una colonna in Esplora set di dati. Fai clic sul nome di un database, di una tabella o di una colonna per visualizzare i metadati associati.

    Esegui il deployment del codice

    Dopo aver installato l'estensione JupyterLab di Dataproc, puoi utilizzare JupyterLab per:

    • Esegui il codice del tuo blocco note sull'infrastruttura Dataproc Serverless

    • Pianificare l'esecuzione di un blocco note su Cloud Composer

    • Invia job batch all'infrastruttura Dataproc Serverless o al tuo cluster Dataproc su Compute Engine.

    Pianificare l'esecuzione di un blocco note su Cloud Composer

    Completa i seguenti passaggi per pianificare il codice del tuo blocco note su Cloud Composer in modo che venga eseguito come job batch su Dataproc Serverless o su un cluster Dataproc su Compute Engine.

    1. Crea un ambiente Cloud Composer.

    2. Fai clic sul pulsante Job Scheduler in alto a destra nel notebook.

    3. Compila il modulo Crea un job pianificato per fornire le seguenti informazioni:

      • Un nome univoco per il job di esecuzione del notebook
      • L'ambiente Cloud Composer da utilizzare per eseguire il deployment del notebook
      • Parametri di input se il notebook è parametrizzato
      • Il cluster Dataproc o il modello di runtime serverless da utilizzare per eseguire il notebook
        • Se è selezionato un cluster, se interromperlo al termine dell'esecuzione del notebook sul cluster
      • Numero di tentativi di ripetizione e ritardo tra i tentativi in minuti se l'esecuzione del notebook non riesce al primo tentativo
      • Le notifiche di esecuzione da inviare e l'elenco dei destinatari. Le notifiche vengono inviate utilizzando una configurazione SMTP di Airflow.
      • La pianificazione dell'esecuzione del notebook
    4. Fai clic su Crea.

    5. Una volta pianificato il notebook, il nome del job viene visualizzato nell'elenco dei job pianificati nell'ambiente Cloud Composer.

    Inviare un job batch a Dataproc Serverless

    • Fai clic sulla scheda Serverless nella sezione Job e sessioni Dataproc nella pagina Avvio di JupyterLab.

    • Fai clic sulla scheda Batch, quindi su Crea batch e compila i campi Informazioni batch.

    • Fai clic su Invia per inviare il job.

    Invia un job batch a un cluster Dataproc su Compute Engine

    • Fai clic sulla scheda Cluster nella sezione Job e sessioni Dataproc nella pagina Avvio di JupyterLab.

    • Fai clic sulla scheda Job, quindi su Invia job.

    • Seleziona un cluster, quindi compila i campi Job.

    • Fai clic su Invia per inviare il job.

    Visualizzare e gestire le risorse

    Dopo aver installato l'estensione JupyterLab di Dataproc, puoi visualizzare e gestire Dataproc Serverless e Dataproc su Compute Engine dalla sezione Job e sessioni Dataproc nella pagina Avvio di JupyterLab.

    Fai clic sulla sezione Job e sessioni Dataproc per visualizzare le schede Cluster e Serverless.

    Per visualizzare e gestire le sessioni Dataproc Serverless:

    1. Fai clic sulla scheda Serverless.
    2. Fai clic sulla scheda Sessioni, quindi su un ID sessione per aprire la pagina Dettagli sessione per visualizzare le proprietà della sessione, i log in Esplora log Google Cloud e terminare una sessione. Nota: viene creata una sessione Dataproc Serverless univoca per avviare ogni notebook Dataproc Serverless.

    Per visualizzare e gestire i batch Dataproc Serverless:

    1. Fai clic sulla scheda Batch per visualizzare l'elenco dei batch Dataproc Serverless nel progetto e nella regione corrente. Fai clic su un ID batch per visualizzarne i dettagli.

    Per visualizzare e gestire i cluster Dataproc su Compute Engine:

    1. Fai clic sulla scheda Cluster. La scheda Cluster è selezionata per elencare i cluster Dataproc su Compute Engine attivi nel progetto e nella regione correnti. Puoi fare clic sulle icone nella colonna Azioni per avviare, arrestare o riavviare un cluster. Fai clic sul nome di un cluster per visualizzarne i dettagli. Puoi fare clic sulle icone nella colonna Azioni per clonare, interrompere o eliminare un job.

    Per visualizzare e gestire i job Dataproc su Compute Engine:

    1. Fai clic sulla scheda Job per visualizzare l'elenco dei job nel progetto corrente. Fai clic su un ID job per visualizzarne i dettagli.