

# Uso de las propiedades de Spark para especificar una configuración personalizada
<a name="notebooks-spark-custom-jar-cfg"></a>

Al crear o editar una sesión en Amazon Athena para Apache Spark, puede usar las [propiedades de Spark](https://spark.apache.org/docs/latest/configuration.html#spark-properties) a fin de especificar los archivos `.jar`, los paquetes u otra configuración personalizada para la sesión. Para especificar las propiedades de Spark, puede usar la consola, la AWS CLI o la API de Athena.

## Uso de la consola de Athena para especificar propiedades de Spark
<a name="notebooks-spark-custom-jar-cfg-console"></a>

En la consola de Athena, puede especificar sus propiedades de Spark al [crear un cuaderno](notebooks-spark-getting-started.md#notebooks-spark-getting-started-creating-your-own-notebook) o [editar una sesión actual](notebooks-spark-getting-started.md#notebooks-spark-getting-started-editing-session-details).

**Para agregar propiedades en el cuadro de diálogo **Crear cuaderno** o **Editar detalles de la sesión****

1. Amplíe **Propiedades de Spark**.

1. Para agregar sus propiedades, use la opción **Editar en la tabla** o **Editar en JSON**.
   + Para la opción **Editar en la tabla**, seleccione **Agregar propiedad** si desea agregar una propiedad o **Eliminar** si desea eliminar una propiedad. Utilice los cuadros **Clave** y **Valor** para introducir los nombres de las propiedades y sus valores.
     + Para agregar un archivo `.jar` personalizado, utilice la propiedad `spark.jars`.
     + Utilice la propiedad `spark.jars.packages` para especificar un archivo de paquete.
   + Para introducir y editar la configuración directamente, elija la opción **Editar en JSON**. En el editor de texto JSON, puede llevar a cabo las siguientes tareas:
     + Seleccione **Copiar** para copiar el texto JSON en el portapapeles.
     + Seleccione **Borrar** para eliminar todo el texto del editor JSON.
     + Elija el icono de ajustes (engranaje) a fin de configurar el ajuste de líneas o seleccionar un tema de color para el editor JSON.

### Notas
<a name="notebooks-spark-custom-jar-cfg-notes"></a>
+ Puede configurar las propiedades en Athena para Spark, que es lo mismo que configurar las [propiedades de Spark](https://spark.apache.org/docs/latest/configuration.html#spark-properties) directamente en un objeto [SparkConf](https://spark.apache.org/docs/latest/api/python/reference/api/pyspark.SparkConf.html).
+ Inicie todas las propiedades de Spark con el prefijo `spark.`. Se ignoran las propiedades con otros prefijos.
+ No todas las propiedades de Spark están disponibles para la configuración personalizada en Athena. Si envía una solicitud `StartSession` que tiene una configuración restringida, la sesión no podrá iniciarse.
  + No puede usar el prefijo `spark.athena.` porque está reservado.

## Uso de la AWS CLI o la API de Athena para proporcionar una configuración personalizada
<a name="notebooks-spark-custom-jar-cfg-cli-or-api"></a>

Para utilizar la AWS CLI o la API de Athena a fin de proporcionar la configuración de la sesión, utilice la acción de la API [StartSession](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartSession.html) o el comando de la CLI [start-session](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/athena/start-session.html). En la solicitud `StartSession`, utilice el campo `SparkProperties` del objeto [EngineConfiguration](https://docs.aws.amazon.com/athena/latest/APIReference/API_EngineConfiguration.html) para pasar la información de configuración en formato JSON. Esto inicia una sesión con la configuración especificada.

Para especificar propiedades de Spark personalizadas desde la AWS CLI, use la configuración `engine-configuration` al iniciar una sesión interactiva.

```
aws athena start-session \ 
--region "REGION"
--work-group "WORKGROUP" \
--engine-configuration '{
    "Classifications": [{
      "Name": "spark-defaults",
      "Properties": {
        "spark.dynamicAllocation.minExecutors": "1",
        "spark.dynamicAllocation.initialExecutors": "2",
        "spark.dynamicAllocation.maxExecutors": "10",
        "spark.dynamicAllocation.executorIdleTimeout": "300"
      }
    }]
  }'
```

También puede especificar los valores de configuración predeterminados a nivel de grupo de trabajo mediante la acción de la API `CreateWorkgroup` o la acción de la API `UpdateWorkgroup`. Los valores predeterminados de configuración definidos en el grupo de trabajo se aplican a todas las sesiones iniciadas para ese grupo de trabajo.

Para especificar las propiedades predeterminadas de Spark de la AWS CLI para un grupo de trabajo, utilice la configuración `engine-configuration` al crear un grupo de trabajo nuevo:

```
aws athena create-work-group \
  --region "REGION" \
  --name "WORKGROUP_NAME" \
  --configuration '{
    "EngineVersion": {
      "SelectedEngineVersion": "Apache Spark version 3.5"
    },
    "ExecutionRole": "EXECUTION_ROLE",
    "EngineConfiguration": {
      "Classifications": [
        {
          "Name": "spark-defaults",
          "Properties": {
            "spark.dynamicAllocation.minExecutors": "1",
            "spark.dynamicAllocation.initialExecutors": "2",
            "spark.dynamicAllocation.maxExecutors": "10",
            "spark.dynamicAllocation.executorIdleTimeout": "300"
          }
        }
      ]
    }
  }'
```

Para modificar las propiedades predeterminadas de Spark de la AWS CLI para un grupo de trabajo, utilice la configuración `engine-configuration` al actualizar un grupo de trabajo: Los cambios se aplicarán a las nuevas sesiones interactivas en el futuro.

```
aws athena update-work-group \
  --region "REGION" \
  --work-group "WORKGROUP_NAME" \
  --configuration-updates '{
    "EngineVersion": {
      "SelectedEngineVersion": "Apache Spark version 3.5"
    },
    "ExecutionRole": "EXECUTION_ROLE",
    "EngineConfiguration": {
      "Classifications": [
        {
          "Name": "spark-defaults",
          "Properties": {
            "spark.dynamicAllocation.minExecutors": "1",
            "spark.dynamicAllocation.initialExecutors": "2",
            "spark.dynamicAllocation.maxExecutors": "12",
            "spark.dynamicAllocation.executorIdleTimeout": "300"
          }
        }
      ]
    }
  }'
```