Sintassi, parametri e codici di ritorno dell'API Spark Jobs

In genere, un lavoro Spark viene inviato con un cURL comando.

La sintassi del cURL comando Spark job è:

curl -k -X POST <V4_JOBS_API_ENDPOINT> -H "Authorization: ZenApiKey <TOKEN> -d @input.json

Sostituisci le variabili come segue:

  • <V4_JOBS_API_ENDPOINT>: L'endpoint dell'istanza che desideri utilizzare per inviare il tuo lavoro Spark. Si noti che sul IBM Cloud Pak for Data server possono esistere più Analytics Engine Powered by Apache Spark istanze e che ciascuna istanza ha un proprio endpoint per l'invio dei lavori. Per ottenere l'endpoint dei lavori Spark per l'istanza fornita, consulta Gestione Analytics Engine powered by Apache Spark delle istanze.
  • <TOKEN>Per ottenere il token di accesso per l'istanza del servizio, consulta Generazione di un token di autorizzazione API.
Nota:

Il metodo POST ritorna dopo la convalida iniziale dell'applicazione. La richiesta di lavoro viene elaborata in modo asincrono; prima viene creato SparkContext il e poi viene eseguita l'applicazione. Lo stato attuale dell'applicazione può essere recuperato utilizzando il metodo GET. Vedi lo stato del lavoro Spark.

Un esempio di payload di input per un Python lavoro:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

Esempio di payload di input per un lavoro R:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/r/dataframe.R",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

Esempio di payload di input per un Scala lavoro:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/jars/spark-examples*.jar",
    "arguments": [
      "1"
    ],
    "class": "org.apache.spark.examples.SparkPi",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.memory": "4G",
      "spark.driver.cores": 1,
      "spark.executor.memory": "4G",
      "spark.executor.cores": 1,
      "ae.spark.executor.count": 1
    },
    "env": {
      "SAMPLE_ENV_KEY": "SAMPLE_VALUE"
    }
  }
}

Risposta restituita se il lavoro è stato inviato correttamente:

{
  "application_id": "<application_id>",
  "state": "ACCEPTED"
}

Suggerimento :

  • Salva il valore restituito di "application_id" per ottenere lo stato del processo o per interromperlo.
  • Salva il valore restituito da "spark_application_id" per monitorare e analizzare l'applicazione Spark sul server della cronologia Spark.

API Spark Job utilizzando runtime Spark personalizzato

Esempio di payload di input per la modifica della versione runtime di Spark:

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "runtime": {
      "spark_version": "3.4"
    }
  }
}

Spark Job API utilizzando pacchetti personalizzati

Un esempio di payload di input per l'utilizzo di pacchetti personalizzati:

{
  "volumes": [
    {
      "name": "cpd-instance::myapp-vol",
      "mount_path": "/my-app"
    }
  ],
  "application_details": {
    "application": "/my-app/python-spark-pi.py",
    "packages":
      "org.apache.spark:spark-sql-kafka-0-10_2.12:3.4.0,org.apache.spark:spark-streaming-kafka-0-10_2.12:3.4.0",
    "conf": {
      "spark.app.name": "MyJob",
      "spark.eventLog.enabled": "true",
      "spark.driver.cores": 4,
      "spark.driver.memory": "8G",
      "spark.executor.memory": "2G",
      "spark.executor.cores": 4,
      "ae.spark.driver.log.level": "ERROR",
      "ae.spark.executor.log.level": "WARN"
    }
  }
}

Parametri API Spark Jobs

Questi sono i parametri che puoi utilizzare nell'API dei lavori Spark:

Tabella 1. Parametri per l'API dei lavori Spark
Nome Sottoproprietà Obbligatorio/Facoltativo Tipo Descrizione
dettagli_applicazione Richiesto Object Specifica i dettagli dell'applicazione Spark
applicazione Richiesto Stringa Specifica il file dell'applicazione Spark, ovvero il percorso del file di lavoro Python, R o scala
argomenti Facoltativo String[] Specifica gli argomenti dell'applicazione
conf Facoltativo Oggetto JSON chiave-valore Specifica i valori di configurazione Spark che sostituiscono i valori predefiniti. Vedere la sezione Parametri di configurazione predefiniti di Spark e variabili d'ambiente per i parametri di configurazione predefiniti definiti dal servizio Spark. Vedere Apache Spark configurazioni per i parametri di configurazione supportati da Apache Spark.
env Facoltativo Oggetto JSON chiave-valore Specifica le variabili di ambiente Spark necessarie per il lavoro. Vedere la sezione Parametri di configurazione predefiniti di Spark e variabili d'ambiente per le variabili d'ambiente predefinite definite dal servizio Spark. Vedere variabili Apache Spark d'ambiente per le variabili d'ambiente supportate da Apache Spark.
classe Facoltativo Stringa Specifica il punto di ingresso per la tua Scala applicazione.
opzioni-driver-java Facoltativo Stringa Specifica opzioni Java aggiuntive da passare al driver
percorso-libreria-driver Facoltativo Stringa Specifica voci aggiuntive del percorso della libreria da passare al driver
percorso-classe-driver Facoltativo Stringa Voci del percorso extra classe da passare al driver. Si noti che i jar aggiunti con --jars vengono automaticamente inclusi nel classpath.
JAR Facoltativo Stringa Specifica un elenco separato da virgole di file jar da includere nei percorsi di classe del driver e dell'esecutore
pacchetti Facoltativo Stringa Specifica un elenco separato da virgole delle coordinate Maven dei file jar da includere nei percorsi di classe del driver e dell'esecutore. Cerca nel repository Maven locale, poi in Maven central e infine in eventuali repository remoti aggiuntivi specificati da --repositories. Il formato delle coordinate deve essere groupId:artifactId:version.
escludi-pacchetti Facoltativo Stringa Specifica un elenco separato da virgole di groupId:artifactId da escludere durante la risoluzione delle dipendenze fornite in --packages per evitare conflitti di dipendenza
Repository Facoltativo Stringa Specifica un elenco separato da virgole di repository remoti aggiuntivi in cui cercare le coordinate Maven fornite con --packages
File Py Facoltativo Stringa Specifica un elenco separato da virgole di file .zip, .egg .py , o da inserire nel PYTHONPATH per Python le app
runtime.spark_version Facoltativo Stringa Specifica la versione runtime di Spark da utilizzare per il processo. IBM Cloud Pak for Data supporta Spark 3.4.
Volumi Facoltativo Elenco di oggetti Specifica i volumi da montare diversi dal volume dell'istanza Spark. Se vengono aggiunti volumi nel payload dell'applicazione, la sezione conf nel payload è obbligatoria.
Nome Richiesto Stringa Specifica il nome del volume
percorso_sottostante_origine Facoltativo Stringa Specifica il percorso di origine nel volume da montare. Il percorso di origine DEVE essere un percorso relativo.
percorso_montaggio Richiesto Stringa Specifica la posizione in cui il volume deve essere montato. Si noti che esistono alcuni percorsi di montaggio proibiti, il cui utilizzo è limitato quando si tenta di inserirli, poiché potrebbero compromettere il runtime.

I seguenti sono valori non consentiti per mount_path : [/, /bin, /boot, /dev, /etc, /home, /lib, /lib64, /licenses, /lost+found, /media, /mnt, /opt, /proc, /root, /run, /sbin, /space_data, /project_data, /srv,/sys, /tmp, /usr, /var, /home/spark/space/assets,/home/spark/spark-events,/home/spark/shared, /home/spark/project/assets]]

Codici di risposta

L'API Spark Jobs restituisce i seguenti codici di risposta:

Codici di risposta dell'API Spark Job
Codice di ritorno Significato del codice di ritorno Descrizione
202 Lavoro accettato Il lavoro Spark è stato convalidato con successo e accettato per l'invio della domanda.
400 Richiesta non valida Questo valore viene restituito quando il payload non è corretto, ad esempio se il formato del payload non è corretto o se mancano degli argomenti.
404 Non trovato Questo viene restituito quando l'applicazione Spark viene inviata per un ID istanza che non esiste.
500 Errore interno del server Questo messaggio viene restituito quando il server non risponde a ciò che gli viene richiesto di fare. Prova a inviare nuovamente la tua candidatura.
503 Servizio non disponibile Questo valore viene restituito quando le risorse sono insufficienti.
Risposta possibile: Could not complete the request. Reason - FailedScheduling.

Parametri di configurazione predefiniti di Spark e variabili d'ambiente

Le tabelle seguenti mostrano i parametri di configurazione Spark e le variabili d'ambiente comunemente utilizzati in Analytics Engine powered by Apache Spark e i loro valori predefiniti.

La tabella seguente elenca i parametri di configurazione di Spark e i relativi valori predefiniti:

Parametri di configurazione predefiniti di Spark
Configurazione Spark Valore predefinito
spark.eventLog.enabled VERO
spark.executor.extraClassPath /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/*
spark.executer.memory 1 g
spark.executer.cores 1
(custom) ae.spark.executor.count 1
(custom) ae.spark.application.priority 1
spark.driver.extraClassPath /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/home/spark/shared/user-libs/spark2/*:/home/spark/user_home/dbdrivers/*:/home/spark/shared/user-libs/common/*:/home/spark/shared/user-libs/connectors/*:/opt/ibm/connectors/parquet-encryption/*:/opt/ibm/third-party/libs/spark2/*:/opt/ibm/third-party/libs/common/*:/opt/ibm/third-party/libs/connectors/*:/opt/ibm/spark/external-jars/*
spark.driver.memory 1024 M
spark.driver.cores 1
spark.local.dir /tmp/spark/scratch Per ulteriori dettagli, consultare il spark.local.dir parametro di configurazione.
spark.master.ui.port 8080
spark.worker.ui.port 8081
spark.ui.port 4040
spark.history.ui.port 18080
spark.ui.enabled VERO
spark.ui.killEnabled FALSO
spark.eventLog.dir file:///home/spark/spark-events
spark.ui.reverseProxy VERO
spark.ui.showConsoleProgress VERO
spark.shuffle.service.port 7337
spark.r.command /opt/ibm/conda/R/bin/Rscript
spark.hadoop.fs.s3a.fast.upload VERO
spark.hadoop.fs.s3a.multipart.size 33554432
spark.hadoop.fs.stocator.scheme.list lattuga romana
spark.hadoop.fs.stocator.cos.scheme lattuga romana
spark.hadoop.fs.stocator.glob.bracket.support VERO
spark.hadoop.fs.stocator.cos.impl com.ibm.stocator.fs.cos.COSAPIClient
spark.hadoop.fs.cos.impl com.ibm.stocator.fs.ObjectStoreFileSystem
spark.hadoop.fs.s3a.impl org.apache.hadoop.fs.s3a.S3AFileSystem
spark.authenticate FALSO
spark.network.crypto.enabled FALSO
spark.network.crypto.keyLength 256

La tabella seguente elenca le variabili di ambiente e i loro valori predefiniti:

Variabili di ambiente Spark predefinite
Variabile di ambiente Valore predefinito
SPARK_DIST_CLASSPATH /home/spark/space/assets/data_asset/*:/home/spark/user_home/dbdrivers/*:/cc-home/_global_/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/*:/opt/ibm/spark/external-jars/*
SPARK_LOCAL_DIRS /tmp/spark/scratch
SPARK_MASTER_WEBUI_PORT 8080
PORTA_SPARK_MASTER 7077
SPARK_WORKER_WEBUI_PORT 8081
CLASSPATH /home/spark/user_home/dbdrivers/*:/opt/ibm/connectors/idax/*:/opt/ibm/connectors/cloudant/*:/opt/ibm/connectors/db2/*:/opt/ibm/connectors/others-db-drivers/*:/opt/ibm/connectors/wdp-connector-driver/*:/opt/ibm/connectors/wdp-connector-jdbc-library/*:/opt/ibm/connectors/stocator/*:/opt/ibm/connectors/s3/*:/opt/ibm/image-libs/common/*:/opt/ibm/image-libs/spark2/*:/opt/ibm/third-party/libs/batch/*
LD_LIBRARY_PATH /opt/ibm/connectors/dsdriver/dsdriver/lib:/opt/ibm/connectors/others-db-drivers/oracle/lib:/opt/ibm/jdk/jre/lib/architecture/server:/opt/ibm/jdk/jre/lib/architecture/:/usr/local/lib:/lib64
RUNTIME_PYTHON_ENV python310
PYTHONPATH /home/spark/space/assets/data_asset:/home/spark/user_home/python-3:/cc-home/_global_/python-3:/home/spark/shared/user-libs/python:/home/spark/shared/conda/envs/python/lib/python/site-packages:/opt/ibm/conda/miniconda/lib/python/site-packages:/opt/ibm/third-party/libs/python3:/opt/ibm/image-libs/python3:/opt/ibm/image-libs/spark2/xskipper-core.jar:/opt/ibm/image-libs/spark2/spark-extensions.jar:/opt/ibm/image-libs/spark2/metaindexmanager.jar:/opt/ibm/image-libs/spark2/stmetaindexplugin.jar:/opt/ibm/spark/python:/opt/ibm/spark/python/lib/py4j-0.10.7-src.zip
R_LIBS_UTENTE /home/spark/space/assets/data_asset:/home/spark/shared/user-libs/R:/opt/ibm/third-party/libs/R:/opt/ibm/conda/R/lib64/R/library/:/opt/ibm/spark/R/lib:/opt/ibm/image-libs/R