json_schema: {
      "properties": {
          "service": {
              "description": "DC/OS service configuration properties",
              "properties": {
                  "cpus": {
                      "default": 0.5,
                      "description": "CPU shares to allocate to each service instance.",
                      "minimum": 0.5,
                      "type": "number"
                  },
                  "external_access": {
                      "description": "Enable access from outside the cluster through Marathon-LB.\nNOTE: this connection is unencrypted.",
                      "properties": {
                          "enable": {
                              "default": true,
                              "description": "Enable or disable creating a VIP for external access through a public node running Marathon-LB.",
                              "type": "boolean"
                          },
                          "external_access_port": {
                              "default": 9000,
                              "description": "For external access, port number to be used for clear communication in Marathon-LB.",
                              "type": "number"
                          },
                          "virtual_host": {
                              "default": "spark-thrift-server.example.org",
                              "description": "For external access, Virtual Host URL to be used in Marathon-LB.",
                              "type": "string"
                          }
                      },
                      "type": "object"
                  },
                  "host_path": {
                      "default": "/var/lib/tmp/spark",
                      "description": "Path in the host to be used for temporary storage",
                      "type": "string"
                  },
                  "instances": {
                      "default": 1,
                      "description": "Number of service instances to run in the cluster.",
                      "minimum": 1,
                      "type": "number"
                  },
                  "mem": {
                      "default": 512.0,
                      "description": "Memory to allocate to each service instance.",
                      "minimum": 512.0,
                      "type": "number"
                  },
                  "name": {
                      "default": "spark-thrift-server",
                      "description": "Name of this service instance",
                      "type": "string"
                  },
                  "port": {
                      "default": 9000,
                      "description": "TCP port for the Spark Thrift Server service",
                      "type": "number"
                  },
                  "spark-cores-max": {
                      "default": "24",
                      "description": "Maximum number of cores to allocate to Spark.",
                      "type": "string"
                  },
                  "spark-driver-memory": {
                      "default": "512m",
                      "description": "Memory to allocate to the Spark driver.",
                      "type": "string"
                  },
                  "spark-executor-cores": {
                      "default": "1",
                      "description": "Maximum number of cores to allocate to the Spark executor.",
                      "type": "string"
                  },
                  "spark-executor-docker-image": {
                      "default": "mesosphere/spark:1.0.8-2.1.0-1-hadoop-2.7",
                      "description": "Name of the docker image to be used for Spark.",
                      "type": "string"
                  },
                  "spark-executor-memory": {
                      "default": "1024m",
                      "description": "Memory to allocate to the Spark executor.",
                      "type": "string"
                  },
                  "spark-max-executors": {
                      "default": "10",
                      "description": "Maximum number of executors for Spark.",
                      "type": "string"
                  },
                  "spark-mesos-extra-cores": {
                      "default": "1",
                      "description": "Extra cores for Spark on Mesos.",
                      "type": "string"
                  }
              },
              "type": "object"
          }
      }
  }