

# Uso del formato Ion en AWS Glue
<a name="aws-glue-programming-etl-format-ion-home"></a>

AWS Glue recupera datos de fuentes y escribe datos en destinos almacenados y transportados en varios formatos de datos. Si los datos se almacenan o se transportan en formato de datos Ion, este documento presenta las características disponibles para utilizar los datos en AWS Glue.

AWS Glue admite el uso del formato Ion. Este formato representa estructuras de datos (que no están basadas en filas o columnas) en representaciones binarias y de texto sin formato intercambiables. Para obtener una introducción al formato por parte de los autores, consulte [Amazon Ion](https://amzn.github.io/ion-docs/). (Para obtener más información, consulte [Especificación de Amazon Ion](https://amzn.github.io/ion-docs/spec.html)).

Puede utilizar AWS Glue para leer archivos Ion de Amazon S3. Puede leer y escribir archivos `bzip` y `gzip` que contengan archivos Ion de S3. Debe configurar el comportamiento de compresión en el [Parámetros de conexión S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3) en lugar de en la configuración que se describe en esta página.

En la siguiente tabla se muestran las operaciones comunes de AWS Glue que admiten la opción de formato Ion.


| Lectura | Escritura | Lectura de streaming | Grupo de archivos pequeños | Marcadores de trabajo | 
| --- | --- | --- | --- | --- | 
| Compatible | No se admite | No se admite | Compatible | No se admite | 

## Ejemplo: leer archivos o carpetas Ion de S3
<a name="aws-glue-programming-etl-format-ion-read"></a>

**Requisitos previos:** necesitará las rutas de S3 (`s3path`) de las carpetas o los archivos Ion que desee leer. 

**Configuración:** en las opciones de la función, especifique `format="json"`. En sus `connection_options`, utilice la clave `paths` para especificar su `s3path`. Puede configurar la forma en que el lector interactúa con S3 en la `connection_options`. Para obtener más información, consulte Tipos y opciones de conexión para ETL en AWS Glue: [Referencia de opción de conexión de Amazon S3](aws-glue-programming-etl-connect-s3-home.md#aws-glue-programming-etl-connect-s3). 

El siguiente script de ETL de AWS Glue muestra el proceso de lectura de archivos o carpetas Ion de S3:

------
#### [ Python ]

Para este ejemplo, use el método [create\$1dynamic\$1frame.from\$1options](aws-glue-api-crawler-pyspark-extensions-glue-context.md#aws-glue-api-crawler-pyspark-extensions-glue-context-create_dynamic_frame_from_options).

```
# Example: Read ION from S3

from pyspark.context import SparkContext
from awsglue.context import GlueContext

sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)

dynamicFrame = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": ["s3://s3path"]},
    format="ion"
)
```

------
#### [ Scala ]

Para este ejemplo, use la operación [getSourceWithFormat](glue-etl-scala-apis-glue-gluecontext.md#glue-etl-scala-apis-glue-gluecontext-defs-getSourceWithFormat).

```
// Example: Read ION from S3

import com.amazonaws.services.glue.util.JsonOptions
import com.amazonaws.services.glue.GlueContext
import org.apache.spark.SparkContext

object GlueApp {
  def main(sysArgs: Array[String]): Unit = {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)

    val dynamicFrame = glueContext.getSourceWithFormat(
      connectionType="s3",
      format="ion",
      options=JsonOptions("""{"paths": ["s3://s3path"], "recurse": true}""")
    ).getDynamicFrame()
  }
}
```

------

## Referencia de configuración de Ion
<a name="aws-glue-programming-etl-format-ion-reference"></a>

No hay valores `format_options` para `format="ion"`.