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