Códigos de retorno, parámetros y sintaxis de API de trabajos Spark
Normalmente envía un trabajo Spark con un mandato cURL .
La sintaxis del mandato cURL del trabajo Spark es:
curl -k -X POST <V4_JOBS_API_ENDPOINT> -H "Authorization: ZenApiKey <TOKEN> -d @input.json
Sustituya las variables como se indica a continuación:
<V4_JOBS_API_ENDPOINT>: el punto final para la instancia que desea utilizar para enviar el trabajo Spark. Tenga en cuenta que pueden existir varias instancias de Analytics Engine Powered by Apache Spark en el servidor IBM Cloud Pak for Data y que cada instancia tiene su propio endpoint para enviar trabajos. Para obtener el punto final de los trabajos de Spark para su instancia aprovisionada, consulte Gestión de instancias de Analytics Engine powered by Apache Spark.<TOKEN>: Para obtener la señal de acceso para la instancia de servicio, consulte Generación de una señal de autorización de API.
El método POST vuelve después de la validación inicial de la aplicación. La solicitud de trabajo se procesa de forma asíncrona; en primer lugar, se crea el SparkContext y, a continuación, se ejecuta la aplicación. El estado actual de la aplicación se puede captar utilizando el método GET. Consulte Estado de trabajo Spark.
Un ejemplo de carga útil de entrada para un trabajo Python:
{
"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"
}
}
}
Un ejemplo de una carga útil de entrada para un trabajo 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"
}
}
}
Un ejemplo de carga útil de entrada para un trabajo Scala:
{
"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"
}
}
}
La respuesta devuelta si el trabajo se ha sometido correctamente:
{
"application_id": "<application_id>",
"state": "ACCEPTED"
}
Sugerencia:
- Guarde el valor devuelto de "application_id" para obtener el estado del trabajo o para detener el trabajo.
- Guarde el valor devuelto de "spark_application_id" para supervisar y analizar la aplicación Spark en el servidor de historial de Spark.
API de trabajo Spark utilizando el tiempo de ejecución Spark personalizado
Un ejemplo de una carga útil de entrada para cambiar la versión de tiempo de ejecución de 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"
}
}
}
API Spark Job usando paquetes personalizados
Un ejemplo de carga útil de entrada para usar paquetes personalizados:
{
"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"
}
}
}
Parámetros de API de trabajos Spark
Estos son los parámetros que puede utilizar en la API de trabajos Spark:
| Nombre | Subpropiedades | Necesaria/Opcional | Tipo | Descripción |
|---|---|---|---|---|
| detalles_aplicación | Obligatorio | Objecto | Especifica los detalles de la aplicación Spark | |
| aplicación | Obligatorio | Serie | Especifica el archivo de aplicación Spark, es decir, la vía de acceso al archivo de trabajo Python, R o scala | |
| Argumentos | Opcional | Serie [] | Especifica los argumentos de la aplicación | |
| conf | Opcional | Objeto JSON clave-valor | Especifica los valores de configuración que prevalecen sobre los valores predefinidos. Consulte la sección Parámetros de configuración de Spark predeterminados y variables de entorno para ver los parámetros de configuración predeterminados definidos por el servicio Spark. Consulte Configuraciones deApache Spark para ver los parámetros de configuración soportados por Apache Spark. | |
| env | Opcional | Objeto JSON clave-valor | Especifica las variables de entorno de Spark necesarias para el trabajo. Consulte la sección Parámetros de configuración de Spark predeterminados y variables de entorno para ver las variables de entorno predeterminadas definidas por el servicio Spark. Consulte Variables de entorno deApache Spark para ver las variables de entorno soportadas por Apache Spark. | |
| class | Opcional | Serie | Especifica el punto de entrada para tu aplicación Scala. | |
| opciones-java-controlador | Opcional | Serie | Especifica opciones Java adicionales para pasar al controlador | |
| vía-acceso-biblioteca-controlador | Opcional | Serie | Especifica las entradas de vía de acceso de biblioteca adicionales que se deben pasar al controlador | |
| vía-acceso-clase-controlador | Opcional | Serie | Especifique entradas de vía de acceso de clases adicionales para pasar al controlador. Tenga en cuenta que los archivos jar añadidos con --jars se incluyen automáticamente en la vía de acceso de clases. |
|
| JAR | Opcional | Serie | Especifica una lista separada por comas de archivos jar que se deben incluir en las vías de acceso de clases de controlador y ejecutor | |
| paquetes | Opcional | Serie | Especifica una lista separada por comas de coordenadas de Maven de archivos jar que se deben incluir en las vías de acceso de clases de controlador y ejecutor. Busca en el repositorio local de Maven y, a continuación, en Maven central y, finalmente, en cualquier repositorio remoto adicional proporcionado por --repositories. El formato de las coordenadas debe ser groupId:artifactId:version. |
|
| exclusión-paquetes | Opcional | Serie | Especifica una lista separada por comas de groupId:artifactId que se deben excluir al resolver las dependencias proporcionadas en --packages para evitar conflictos de dependencia |
|
| Repositorios | Opcional | Serie | Especifica una lista separada por comas de repositorios remotos adicionales para buscar las coordenadas de Maven proporcionadas con --packages |
|
| Archivos Py | Opcional | Serie | Especifica una lista separada por comas de archivos .zip, .eggo .py que se deben colocar en PYTHONPATH para aplicaciones Python |
|
| runtime.spark_version | Opcional | Serie | Especifica la versión de tiempo de ejecución de Spark que se utilizará para el trabajo. IBM Cloud Pak for Data es compatible con Spark 3.4. | |
| Volumes | Opcional | Lista de objetos | Especifica los volúmenes que se van a montar distintos del volumen de instancia de Spark. Si se añaden volúmenes en la carga útil de la aplicación, la sección conf de la carga útil es obligatoria. | |
| name | Obligatorio | Serie | Especifica el nombre del volumen | |
| vía_acceso_sub_origen | Opcional | Serie | Especifica la vía de acceso de origen en el volumen que se va a montar. La vía de acceso de origen DEBE ser una vía de acceso relativa. | |
| vía_acceso_montaje | Obligatorio | Serie | Especifica la ubicación donde se va a montar el volumen. Tenga en cuenta que hay algunas vías de acceso de montaje prohibidas, que no podrá utilizar cuando intente especificarlas, ya que pueden comprometer el tiempo de ejecución. |
Códigos de respuesta
La API de trabajos Spark devuelve los siguientes códigos de respuesta:
| Código de retorno | Significado del código de retorno | Descripción |
|---|---|---|
| 202 | Trabajo aceptado | El trabajo Spark se ha validado y aceptado correctamente para enviar la solicitud. |
| 400 | Solicitud errónea | Este código se devuelve cuando la carga útil es incorrecta, por ejemplo, si el formato de la carga útil es incorrecto o faltan argumentos. |
| 404 | No se ha encontrado | Esto se devuelve cuando se envía la aplicación Spark para el ID de instancia que no existe. |
| 500 | Error interno del servidor | Esto se devuelve cuando el servidor no responde a lo que le está pidiendo que haga. Intente volver a someter su trabajo. |
| 503 | Servicio no disponible | Este código se devuelve cuando no hay suficientes recursos. Respuesta posible: Could not complete the request. Reason - FailedScheduling. |
Parámetros de configuración de Spark predeterminados y variables de entorno
Las siguientes tablas muestran los parámetros de configuración de Spark y las variables de entorno que se utilizan habitualmente en Analytics Engine powered by Apache Spark y sus valores por defecto.
La tabla siguiente lista los parámetros de configuración de Spark y sus valores predeterminados:
| Configuración de Spark | Valor predeterminado |
|---|---|
spark.eventLog.enabled |
TRUE |
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 Consulte Parámetro de configuraciónspark.local.dir para obtener detalles. |
spark.master.ui.port |
8080 |
spark.worker.ui.port |
8081 |
spark.ui.port |
4040 |
spark.history.ui.port |
18080 |
spark.ui.enabled |
TRUE |
spark.ui.killEnabled |
FALSE |
spark.eventLog.dir |
file:///home/spark/spark-events |
spark.ui.reverseProxy |
TRUE |
spark.ui.showConsoleProgress |
TRUE |
spark.shuffle.service.port |
7337 |
spark.r.command |
/opt/ibm/conda/R/bin/Rscript |
spark.hadoop.fs.s3a.fast.upload |
TRUE |
spark.hadoop.fs.s3a.multipart.size |
33554432 |
spark.hadoop.fs.stocator.scheme.list |
cos |
spark.hadoop.fs.stocator.cos.scheme |
cos |
spark.hadoop.fs.stocator.glob.bracket.support |
TRUE |
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 |
FALSE |
spark.network.crypto.enabled |
FALSE |
spark.network.crypto.keyLength |
256 |
La tabla siguiente lista las variables de entorno y sus valores predeterminados:
| Variable de entorno | Valor predeterminado |
|---|---|
| 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 |
| PUERTO_WEBUI_MASTER_SPARK_MASTER | 8080 |
| PUERTO_MAESTRO | 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_USER | /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 |
Tema padre: Envío de trabajos Spark