

# Superación del límite de tamaño para bloques de código de 68 000
<a name="notebooks-spark-troubleshooting-code-block-size-limit"></a>

Athena para Spark tiene un límite de tamaño para bloques de código de cálculo conocido de 68 000 caracteres. Cuando ejecuta un cálculo con un bloque de código por encima de este límite, puede recibir el siguiente mensaje de error:

 “…” en “CodeBlock” no cumplió con la restricción: la longitud debe ser menor o igual a 68 000

La siguiente imagen muestra este error en el editor de cuadernos de la consola de Athena.

![\[Mensaje de error de tamaño del bloque de código en el editor de cuadernos de Athena\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/notebooks-spark-troubleshooting-code-block-size-limit-1.png)


El mismo error puede producirse cuando se utiliza la AWS CLI para ejecutar un cálculo que tiene un bloque de código grande, como en el siguiente ejemplo.

```
aws athena start-calculation-execution \ 
    --session-id "{SESSION_ID}" \ 
    --description "{SESSION_DESCRIPTION}" \ 
    --code-block "{LARGE_CODE_BLOCK}"
```

El comando muestra el siguiente mensaje de error:

*\$1LARGE\$1CODE\$1BLOCK\$1* at 'codeBlock' failed to satisfy constraint: Member must have length less than or equal to 68000 (\$1LARGE\$1CODE\$1BLOCK\$1 en “codeBlock” no cumplió con la restricción: la longitud del miembro debe ser menor o igual a 68 000).

## Solución
<a name="notebooks-spark-troubleshooting-code-block-size-limit-workaround"></a>

Para solucionar este problema, cargue el archivo que contiene su código de cálculo o consulta a Amazon S3. A continuación, utilice boto3 para leer el archivo y ejecutar el código o SQL.

En los siguientes ejemplos se supone que ya ha cargado el archivo que contiene la consulta SQL o el código Python en Amazon S3.

### Ejemplo de SQL
<a name="notebooks-spark-troubleshooting-code-block-size-limit-sql-example"></a>

El siguiente ejemplo de código lee el archivo `large_sql_query.sql` de un bucket de Amazon S3 y luego ejecuta la consulta grande que contiene el archivo.

```
s3 = boto3.resource('s3') 
def read_s3_content(bucket_name, key): 
    response = s3.Object(bucket_name, key).get() 
    return response['Body'].read() 

# SQL 
sql = read_s3_content('bucket_name', 'large_sql_query.sql') 
df = spark.sql(sql)
```

### Ejemplo de PySpark
<a name="notebooks-spark-troubleshooting-code-block-size-limit-pyspark-example"></a>

El siguiente ejemplo de código lee el archivo `large_py_spark.py` de Amazon S3 y luego ejecuta el bloque de código grande que se encuentra en el archivo.

```
s3 = boto3.resource('s3') 
 
def read_s3_content(bucket_name, key): 
    response = s3.Object(bucket_name, key).get() 
    return response['Body'].read() 
     
# PySpark 
py_spark_code = read_s3_content('bucket_name', 'large_py_spark.py') 
exec(py_spark_code)
```