Añadir configuraciones personalizadas

Al enviar trabajos y núcleos de Spark, puedes especificar las configuraciones personalizadas que se aplicarán a los entornos de ejecución de Spark.

Especificar configuraciones personalizadas a nivel de instancia

curl -k --request PATCH <INSTANCE_ENDPOINT>/default_configs  -H "Authorization: Bearer <ACCESS_TOKEN>" --data-raw '{ "spark.ui.requestheadersize": "14k", "spark.eventLog.enabled": "true"}'

}

Especificación de configuraciones personalizadas a nivel del núcleo:

curl -k -X POST <KERNEL_ENDPOINT> -H "Authorization: Bearer <ACCESS_TOKEN>" -d '{"name":"python310", "engine": {"conf": {"spark.ui.requestheadersize":"16k", "spark.eventLog.enabled": "true"}}}'
curl -k -X POST <V4_JOBS_API_ENDPOINT> -H "Authorization: Bearer <ACCESS_TOKEN>" -d @input.json
An example payload:
{
	"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.ui.requestheadersize":"16k"
		}
	}
}

Además de las configuraciones a nivel de instancia y de kernel, también puedes seleccionar los nodos del clúster de Kubernetes (para implementar los entornos de ejecución de Spark) utilizando tolerations, nodeselector y topologySpreadConstraints.

Especifica las propiedades en formato codificado de Base64.

Ejemplo:

El siguiente ejemplo muestra las propiedades que se definen mediante topologySpreadConstraints.

[
  {
    "maxSkew": 1,
    "topologyKey": "mynode",
    "whenUnsatisfiable": "DoNotSchedule"
  }
]
"ae.kubernetes.spec.topologySpreadConstraints": "WwogIHsKICAgICJtYXhTa2V3IjogMSwKICAgICJ0b3BvbG9neUtleSI6ICJteW5vZGUiLAogICAgIndoZW5VbnNhdGlzZmlhYmxlIjogIkRvTm90U2NoZWR1bGUiCiAgfQpdCg=="

El siguiente ejemplo muestra un método completo para definir las tres configuraciones: tolerations, nodeselector y topologySpreadConstraints. Todos los valores se codifican utilizando el formato « Base64 ».

"ae.kubernetes.spec.tolerations": "W3sKCiAgImtleSI6ICJrZXkxIiwKCiAgIm9wZXJhdG9yIjogIkVxdWFsIiwKCiAgInZhbHVlIjogInZhbHVlMSIsCgogICJlZmZlY3QiOiAiTm9FeGVjdXRlIiwKCiAgInRvbGVyYXRpb25TZWNvbmRzIjogOTAwCgp9LCB7CgogICJrZXkiOiAia2V5MTIiLAoKICAib3BlcmF0b3IiOiAiRXF1YWwiLAoKICAidmFsdWUiOiAidmFsdWUyIiwKCiAgImVmZmVjdCI6ICJOb0V4ZWN1dGUiLAoKICAidG9sZXJhdGlvblNlY29uZHMiOiA5MDAKCn1dCg==",
"ae.kubernetes.spec.nodeSelector": "bXlub2RlOiBzcGFyawo=",
"ae.kubernetes.spec.topologySpreadConstraints": "WwogIHsKICAgICJtYXhTa2V3IjogMSwKICAgICJ0b3BvbG9neUtleSI6ICJteW5vZGUiLAogICAgIndoZW5VbnNhdGlzZmlhYmxlIjogIkRvTm90U2NoZWR1bGUiCiAgfQpdCg=="

Las configuraciones establecidas por el administrador a nivel de servicio son inmutables. No es posible modificar la configuración a nivel de instancia ni en el momento de enviar solicitudes de kernel o de trabajo. Aunque introduzcas la configuración, se ignorará.