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.
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:
| 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:
| 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:
| 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:
| 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 |